【发布时间】:2017-06-19 14:34:39
【问题描述】:
想象一些函数(RetrieveResult),通过指针/引用/值返回一个对象——我不知道也不想知道,因为事情可能会改变。我只想使用auto 存储结果,并保护该对象免受当前范围内的意外更改,或者例如,如果该对象向上传播。
写起来很直观:
const auto result = RetrieveResult();
如果RetrieveResult 按值或引用返回对象,一切正常。但是,如果函数返回一个指针,则恒常适用于该指针,而不是指针指向的对象。我仍然可以通过什么方式更改对象。写作
const auto const result = ....
导致编译错误:
重复的“常量”
当然,我可以像这样声明变量: 常量自动* ... 常量自动*常量...
但这种方式将我与指针联系在一起,即它不是一个通用的解决方案。
是否可以保持真正的恒定性,同时提供灵活性(具体类型的独立性)?
【问题讨论】:
-
"我不知道也不想知道" 如果您不知道对象是什么,您应该如何访问它?据你所知,它可能是一个重载
->的类,你认为它是一个指针:P -
@Rakete1111,例如,我可能只是转发对象,而不是触摸它
-
@Alexey 如果你转发它,你为什么关心它指向的指针是否是
const? -
在 VS2015 中,
const auto const不会产生任何编译器错误,只是一个警告:warning C4114: same type qualifier used more than once -
@Rakete1111, 总有一些原因 ) C++ 有强大的语法,我正试图感知所有这些魔鬼的东西)