你有没有恨它
class Foobar {
public:
Something& getSomething(int index) {
// big, non-trivial chunk of code...
return something;
}
const Something& getSomething(int index) const {
// big, non-trivial chunk of code...
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
我们无法使用另一个方法实现这两种方法,因为您无法const从const版本中调用非版本(编译器错误).演员将被要求const从非const一个版本调用该版本.
有没有一个真正优雅的解决方案,如果没有,最接近一个?
作为我之前的问题的后续(通过const&写入类成员),是否也很好地定义并正确抛弃类成员方法的常量?
class A
{
public:
A()
: a(5)
{
}
int run() const
{
std::cout << "a: " << a << std::endl;
int& x = (int&)a;
x = 17;
std::cout << "a: " << a << std::endl;
return 0;
}
private:
int a;
};
int main()
{
A program;
return program.run();
}
Run Code Online (Sandbox Code Playgroud)
输出(在cpp.sh上用c ++ 14测试-O0,-Wall,-Wextra和-Wpedantic):
a: 5
a: 17
Run Code Online (Sandbox Code Playgroud)
如果没有,我会参考哪个标准来解释?