C++ 抛弃常数
示例
可以使用const_cast关键字将指向const对象的指针转换为指向非const对象的指针。在这里,我们const_cast用来调用不是const正确的函数。char*即使它从未通过指针写入,它也只接受非常量参数:
void bad_strlen(char*); const char* s = "hello, world!"; bad_strlen(s); //编译错误 bad_strlen(const_cast<char*>(s)); //好的,但是最好让bad_strlen接受constchar*
const_cast引用类型可以用于将const限定的左值转换为非const限定的值。
const_cast这很危险,因为它使C++类型系统无法阻止您尝试修改const对象。这样做会导致未定义的行为。
const int x = 123; int& mutable_x = const_cast<int&>(x); mutable_x = 456; //可能会编译,但会产生*未定义的行为*
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下