const_cast运算符
从类中移除 const、 volatile和 __unaligned 属性。
const_cast < type-id > ( expression )
备注
对任何对象类型的指针或指向数据成员的指针可以显式转换为相同的 ( const、 volatile和 __unaligned 限定符的类型。对指针和引用,结果将引用原始对象。向数据成员的指针,则结果将引用成员和基元 (uncast) 指针相同的数据成员。基于引用的对象的类型,写入操作将生成的指针,引用,或者指向数据成员的指针可能会产生未定义的行为。
不能使用 const_cast 运算符直接重写一个常数变量的常量状态。
const_cast 运算符将 null 指针值为目标类型的 null 指针值。
示例
// expre_const_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class CCTest {
public:
void setNumber( int );
void printNumber() const;
private:
int number;
};
void CCTest::setNumber( int num ) { number = num; }
void CCTest::printNumber() const {
cout << "\nBefore: " << number;
const_cast< CCTest * >( this )->number--;
cout << "\nAfter: " << number;
}
int main() {
CCTest X;
X.setNumber( 8 );
X.printNumber();
}
在包含 const_cast的行, this 指针的数据类型是 const CCTest *。const_cast 运算符更改 this 指针的数据类型。 CCTest *,允许该成员 number 进行修改。只转换次显示语句的其余部分的。