你好呀,我是阿德。
上一篇介绍了const的常见用法(C++中const关键字的使用方法),这次专门讲解在C++中的类使用const的几种情况。
01const成员变量将成员变量使用const进行修饰,表示该成员变量需要被成员函数共享,但是不能被修改。
classA{constinta;};
常成员变量可以在定义时初始化,如果没有初始化,那么必须通过初始化列表进行初始化,不能在函数中用等号进行赋值。
classA{constinta;public:A(inti):a(i){}//a=i};02const成员函数
在一个类中,任何不会修改成员变量的函数都应该声明为const类型。使用const关键字进行说明的成员函数,称为常成员函数。
classA{constinta;public:A(inti):a(i){}//a=ivoidprint()const;};voidA::print()const{//常成员函数,这里也要加constprintf("helloconst\n");}
如果在编写const成员函数时,不慎修改成员变量,或者调用了其它非const成员函数,编译器将指出错误,因为非const成员函数有可能会修改成员变量。
03const对象声明一个类的对象时加上const,表示得到一个常对象,该对象的成员变量都不能被修改。常对象只能调用const成员函数,因为调用非const成员函数有可能会修改成员变量。非const对象则可以访问任意的成员函数,包括const成员函数。如果两个函数的名字和参数列表相同,区别只是是否加const,它们不是函数重载,这个一定要记清楚。classA{constinta;public:A(inti):a(i){}//a=ivoidprint()const;voidprint();};voidA::print()const{//常成员函数,这里也要加constprintf("helloconst\n");}voidA::print(){printf("hello\n");}intmain(){intn;constintr=n;Aa1(1);constAa2(2);a1.print();a2.print();return0;}//输出//hello//helloconst从结果可以发现,const对象默认调用const成员函数。非const对象默认调用非const成员函数。
END我是,我是阿德,一名多年经验的软件开发工程师,高校大厂程序员。此