修改*this而不使用const_cast的Const方法是指在C++中,当一个成员函数被声明为const时,它承诺不会修改对象的状态。在这种情况下,如果需要修改对象的成员变量,但又不想使用const_cast来去除const限制,可以使用mutable关键字。 mutable关键字可以用于声明类的成员变量,在const成员函数中,即使对象被声明为const,这些成员变量...
在const成员函数fun()中,编译器将“ this”视为“ const student * const this”,即“ this”是指向常量对象的常量指针,因此编译器不允许通过以下方式更改数据成员“这个”指针。 const_cast将“ this”指针的类型更改为“ student * const this”。 #include using namespace std; class student { private: in...
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 *,以允许修改成员 num...
{ // this->i = v; // 编译错误:this 是指向 const 的指针 const_cast<type *>(this)->i = v; // 只要该对象不是 const 就 OK } }; int main() { int i = 3; // 不声明 i 为 const const int &rci = i; //rci = 100; //错误 const_cast<int &>(rci) = 4; // OK:修改 ...
#include<iostream>structtype{inti;type():i(3){}voidf(intv)const{// this->i = v; // 编译错误:this 是指向 const 的指针const_cast<type*>(this)->i=v;// 只要该对象不是 const 就 OK}};intmain(){inti=3;// 不声明 i 为 constconstint&rci=i;//rci = 100; //错误const_cast<int...
()const;08.private:09.intnumber;10.};11.12.voidCCTest::setNumber(intnum){number=num;}13.14.voidCCTest::printNumber()const{15.cout"\nBefore:"16.const_cast(this)-"\nAfter:"18.}19.20.intmain(){21.CCTestX;22.X.setNumber(8);23.X.printNumber();24.cout"\n"25.}二、运行结果如下:...
被标记为const的函数,是不能更改m_a的成员。 这里的Change函数,是标记为const的,那么就不能更改成员属性m_a了。 如果要强制改动,则将const_cast,把this指针改了,然后再赋值。 this指针,原型为: const AAA* const this; 第一个const是表明,this指针指向的内容不能更改; 第二个const是表明,this... ...
常成员函数中去除this指针的const属性 #include<iostream>#include<string>classCTest{public: CTest() : m_nTest(2) { }voidfoo(intnTest)const{// m_nTest = nTest; // 错误const_cast<CTest*>(this)->m_nTest = nTest; } private:intm_nTest; ...
#include <iostream>structtype{inti;type():i(3){}voidf(intv)const{// this->i = v; // 编译错误:this 是指向 const 的指针const_cast<type*>(this)->i=v;// 只要该对象不是 const 就 OK}};intmain(){inti=3;// 不声明 i 为 constconstint&rci=i;const_cast<int&>(rci)=4;// OK:...
classFather{public:voidFunc(intson)const{//常成员函数//m_son = son;//错误:无法修改成员const_cast<Father*const>(this)->m_son=son;//正确:const_cast去掉常成员函数成员的const属性}private:intm_son;};classSon:publicFather{};intmain(){constinti=32;int*k=const_cast<int*>(&i);//const_ca...