吸气剂和二传手用其他语言

时间:2011-12-22 09:37:35

标签: c++ objective-c

我是一名iphone程序员,并且知道getter和setter如何工作的方式。(该属性和综合)

但我不熟悉其他语言,并想知道如果我用c ++这样的语言创建变量 &安培;通过创建其类的对象来访问它 然后系统会自动为其创建一个吸气剂和设定器吗? 或者我需要做一些额外的工作?

3 个答案:

答案 0 :(得分:3)

C ++没有为此提供任何功能,遗憾的是,您必须手动编写getter和setter。

由于该语言不提供任何类型的支持,因此您需要遵循一些经验法则来制作更高质量的代码:

  • 所有成员变量都应该是非公开的。如果需要访问它们,请编写一个getter和/或setter。这使您可以轻松修改以后访问该变量的方式,而不会有太多麻烦。

  • 只有属于界面的成员(即:需要可见的成员)应该有getter / setter。不要开始为你班级中的每个成员编写一个getter / setter对,并将其称为封装,因为它不是。

  • 如果您需要变量的setter或getter,它并不意味着您也需要另一个变量。原则上,只有在需要时添加一些内容:添加新内容很容易,但是一旦您拥有使用该功能的代码,就很难删除它们。

一般来说,这里是getter和setter在C ++中的工作方式:

class Person
{
  public:
     const std::string& name() const {
         return name_;
     }

     void name(const std::string& name) {
         name_ = name;
     }

  private:
    std::string name_;
};

int main()
{
    Person pers;
    pers.name("John");
    std::cout << pers.name();

    return 0;
}

很多人都喜欢将这些功能命名为getName()setName(),但我更喜欢这样做。还记得总是让你的getter const(例如:在const std::string& name() const的末尾) - 这将向编译器发出信号,表明该函数不会修改Person对象。

编辑:正如您所看到的,在C ++中,getter和setter就像其他任何方法一样,对它们来说绝对没什么特别的。

答案 1 :(得分:0)

在c ++中你需要一些额外的工作。

但是什么阻止你进行测试呢?

编辑:

您必须完全按照经典函数

声明和编码自己的方法

答案 2 :(得分:0)

C ++中没有getter / setter的概念(与内置的Objective-C相比)

你必须手动完成(但这通常是一个坏主意)。