【发布时间】:2016-01-20 17:12:38
【问题描述】:
class A{
private:
int a;
public:
const int &ref = a;
};
int main() {
A obj;
obj.a = 20; // error cause private
obj.ref = 30; // not private but const so ERROR
return 0;
}
我正在尝试使成员变量可访问但只能通过接口读取。目前我已经尝试过这种方法,它似乎编译得很好。我为我的原始变量int a 做了一个const reference 并把它变成了public。这种做法有什么问题我可能会错过吗?或者这个例子是否安全可靠地用于实际目的?
提供具有const 正确性的成员函数没有错(我也使用过它并打算一直这样做),但我问如果我必须提供这种方式有什么问题一个只读变量。
谢谢你:)
【问题讨论】:
-
好旧的访问器函数有什么问题?
int A::get_a() const noexcept { return this->a; } -
更好的做法是使用 getter 和 setter 来访问你的类成员。您可以更好地控制访问逻辑
-
不为类添加
const int&成员中断复制语义吗? -
@JamesAdkison 你能解释一下吗...
-
@JamesAdkison 重点(另一点是增加班级规模,不必要)