C++强制转换运算符

来源:互联网 发布:单片机培训机构 编辑:程序博客网 时间:2024/05/16 00:30

1、const_cast
作用:从类中移除const、volatile和_unaligned特性
声明语法:

const_cast <type_id> (expression)

下面看一段示例代码,就能明白这个关键字的作用是声明了

// 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();}

在CCTest的成员函数setNumber中,它原本是不能修改类中的变量的,因为函数声明为了const。但使用了,const_cast后,this指针的数据类型从const CCTest*,转变为CCTest*,以允许修改成员变量number。而强制转换仅对其所在的语句中的其余部分持续。

0 0
原创粉丝点击