Mot*_*tti 47
const_cast可用于按顺序删除或向对象添加常量.当您想要调用特定的重载时,这非常有用.
举例:
class foo {
int i;
public:
foo(int i) : i(i) { }
int bar() const {
return i;
}
int bar() { // not const
i++;
return const_cast<const foo*>(this)->bar();
}
};
Run Code Online (Sandbox Code Playgroud)
Oza*_*ray 28
你不需要const_cast添加constness:
class C;
C c;
C const& const_c = c;
Run Code Online (Sandbox Code Playgroud)
请仔细阅读这个问题和答案.
Sco*_*ham 28
自C++ 17以来的STL现在提供std::as_const了这种情况.
请参阅:http://en.cppreference.com/w/cpp/utility/as_const
使用:
CallFunc( as_const(variable) );
Run Code Online (Sandbox Code Playgroud)
代替:
CallFunc( const_cast<const decltype(variable)>(variable) );
Run Code Online (Sandbox Code Playgroud)
您可以使用const_castif,但实际上并不需要 - 非const可以隐式转换为const.
| 归档时间: |
|
| 查看次数: |
63489 次 |
| 最近记录: |