我是一名iphone程序员,并且知道getter和setter如何工作的方式。(该属性和综合)
但我不熟悉其他语言,并想知道如果我用c ++这样的语言创建变量 &安培;通过创建其类的对象来访问它 然后系统会自动为其创建一个吸气剂和设定器吗? 或者我需要做一些额外的工作?
答案 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相比)
你必须手动完成(但这通常是一个坏主意)。