【发布时间】:2016-03-17 01:48:44
【问题描述】:
我只是想知道如果我只允许一个 const 引用变量,是否可以绕过使用 getter,如下所示
#include <string>
class cTest
{
private:
int m_i;
std::string m_str;
public:
const int & i;
const std::string & str;
cTest(void)
: i(m_i)
, str(m_str)
{}
};
int main(int argc, char *argv[])
{
cTest o;
int i = o.i; // works
o.i += 5; // fails
o.str.clear(); // fails
return 0;
}
我想知道为什么人们似乎根本不这样做。我缺少一些严重的缺点吗?请提供优点和缺点列表,并在必要时进行更正。
优点:
- 调用 getter 函数没有开销。
- 由于功能较少,程序大小减小。
- 我仍然可以修改类的内部,引用变量提供了一个抽象层。
缺点:
- 我有一堆参考资料,而不是 getter 函数。这会增加对象大小。
- 使用
const_cast,人们可以搞砸私人成员,但这些人很淘气,对吧?
【问题讨论】: