在 SO 上已经提出了几个关于 C++ 中访问器方法的问题,但没有一个能够满足我对这个问题的好奇心。
我尽可能避免使用访问器,因为像 Stroustrup 和其他著名的程序员一样,我认为一个包含许多访问器的类是糟糕的 OO 的标志。在 C++ 中,在大多数情况下,我可以为类添加更多责任或使用friend 关键字来避免它们。然而在某些情况下,您确实需要访问特定的班级成员。
有几种可能性:
1. 完全不要使用访问器
我们可以将各自的成员变量公开。这在 Java 中是不行的,但在 C++ 社区中似乎没问题。但是,我有点担心应该返回显式副本或对对象的只读(const)引用的情况,这是否夸大了?
2. 使用 Java 风格的 get/set 方法
我不确定它是否来自Java,但我的意思是:
int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount
3. 使用客观的 C 风格的 get/set 方法
这有点奇怪,但显然越来越普遍:
int amount(); // Returns the amount
void amount(int amount); // Sets the amount
为了让它工作,你必须为你的成员变量找到一个不同的名字。有些人在后面加上下划线,有些人在前面加上“m_”。我也不喜欢。
你使用哪种风格,为什么?