#include<iostream> using namespace std; class CTest{ public: const int m_a; mutable int m_b;//关键字:mutable 在常函数中可以修改 //初始化参数列表:真正初始化类成员的地方,const 成员的初始化必须在初始化参数进行 //普通的成员也可以初始化,多个成员初始化用逗号分割 //初始化成员顺序,是成员在类中声明的先后顺序 CTest():m_a(10),m_b(30){ m_b=20; } CTest(int a):m_b(m_a),m_a(a){ cout<<m_a<<" "<<m_b<<endl; } //常函数:参数列表后加const修饰,const 修饰this指针 void show(/*const CTest *const this*/)const{ cout<<m_a<<" "<<m_b<<endl; this->m_b=90; } void play(){ cout<<m_a<<" "<<m_b<<endl; m_b=20; } }; int main(){ //const int a=10;//定义来了就要初始化,之后不能修改 //int b=20; // const int * p1 = &a;//常量指针 const修饰的是*p // cout<<*p1<<endl; // p1=&b;//修改指针的指向 // //*p1=30;//不能通过当前这个指针去修改指向空间的值 // int * const p2=&b;//指针常量 const修饰的是p指针 // *p2 = 30; // cout<<*p2<<endl;//通过指针修改指向空间里的值 // //p2=&a;//修改指针的指向 // //int * const p3 =&a;//非法 /*CTest tst; CTest tst1(60); cout<<tst.m_a<<" "<<tst.m_b<<endl; cout<<tst1.m_a<<" "<<tst1.m_b<<endl; tst1.show(); cout<<tst1.m_b<<endl;*/ const CTest tst; //tst.play();//CTest *const this=&tst 指针安全级别降低,不允许 tst.show();//const CTest * const this=&tst; CTest tst2; tst2.show();//const CTest * const thid=&tst2; system("pause"); return 0; }
标签:初始化,const,14,int,成员,CTest,mutable,2022.01 From: https://www.cnblogs.com/hualuoyumufeng/p/15827240.html