我有一个带有数据属性的类,比如类型int
,它在整个程序运行期间应该是常量,并且在所有类实例中具有相同的值。我希望通过名为get_value()
的公共成员函数访问此值。显而易见的方法是定义私有static const
类成员并让get_value
返回它。
或者,我可以将值放在get_value
本身的定义中:例如,int get_value()const{return 5;}
。第一种方法明显优于第二种吗?
答案 0 :(得分:2)
从计算的角度来看,编译代码的期限应该没有太大差异。
但是使用第一种方法你不会在你的函数中隐藏变量:如果你没有1而是10这些变量我希望看到它们在你的类的开头定义,而不是在一些getter函数中10行以下
我认为它更清洁,我知道通过查看你的课程是什么“神奇的价值观”,我不需要完成你的职能。
答案 1 :(得分:2)
想想一个维护程序员,从现在起一年后查看你的代码并思考:为什么五个?五是什么意思?当我们星期六工作时,也许真的是六岁?
比较他的任务,如果他看到了这个:
int const MY_BEST_GUESS_AT_LOW_WATERMARK = 5;
return MY_BEST_GUESS_AT_LOW_WATERMARK;
答案 2 :(得分:1)
我认为这只是风格问题,因为编译会在大多数情况下优化const。
答案 3 :(得分:0)
为什么不直接将静态常量声明为公共?
#include <iostream>
using namespace std;
class Foo {
public:
static const int VALUE = 5;
};
int main() {
cout << Foo::VALUE << endl;
return 0;
}
当然,你可以添加一个公共成员get_value
,但我不知道会给你什么。我不认为这打破了封装,因为VALUE
是常量:我会不以这种方式公开静态或成员变量但它似乎合理一个常量,并且在C ++标准库中有一些先例。