【发布时间】:2020-04-15 11:54:27
【问题描述】:
struct Dummy {
int a = 2;
int b = 6;
const Dummy share() {
return Dummy{};
}
};
在上面的Dummy 结构中有一个名为share() 的成员函数,它返回一个常量Dummy 对象。我除了我不能改变从share() 函数返回的对象。
但是,结果表明该对象是可变的。我在下面粘贴实验代码以获取更多详细信息。
int main() {
Dummy d1;
auto d2 = d1.share();
d2.a = 10;
// the output is 10.
std::cout << "d2.a is " << d2.a << std::endl;
}
那么为什么我可以在这个 const 对象中改变成员变量呢?
【问题讨论】:
-
因为
d2不是常量? -
然后你复制一份^_^
-
@daoliker 当推导类型占位符 auto 时,const 限定符被丢弃。