在C++中,const关键字的使用在C语言的基础上得到了进一步扩展和丰富,不仅可以用于定义常量,还可以在类中用于定义常量成员变量、常量成员函数以及常量对象。
常量变量(Constant Variables)
-
定义:常量变量是指一旦初始化后就不能再被修改的变量。
-
用法:
const int constantValue = 100;
示例:
const int constantValue = 100; constantValue = 200; // 错误,常量变量不能被修改
常量指针(Pointer to Constant)
-
定义:指向常量的指针,意味着不能通过该指针修改它所指向的值,但可以改变指针本身指向的地址。
-
用法:
const int *ptr; int const *ptr;
示例:
int a = 10; const int *ptr = &a; *ptr = 20; // 错误,不能通过 ptr 修改它指向的值 ptr = &b; // 合法,ptr 可以指向其他地址
指针常量(Constant Pointer)
-
定义:指针本身是常量,意味着指针一旦初始化后不能再指向其他地址,但可以通过该指针修改其指向对象的值。
-
用法:
int *const ptr;
示例:
int a = 10; int *const ptr = &a; ptr = &b; // 错误,ptr 是常量指针,不能改变它指向的地址 *ptr = 20; // 合法,可以通过 ptr 修改 a 的值
常量成员变量(Const Member Variables)
-
定义:常量成员变量在对象创建时必须初始化,并且在对象的生命周期内不能修改。初始化通常在构造函数的初始化列表中进行。
-
用法:
class Demo { public: Demo(int v = 0) : val(v), cval(v) {} void setval(int v) { val = v; } int getval() const { return val; } private: int val; const int cval; };
常量成员函数(Const Member Functions)
-
定义:常量成员函数表示这个函数不能修改对象的任何成员变量,并且只能调用其他const成员函数。
-
用法:
class Demo { public: Demo(int v = 0) : val(v), cval(v) {} void setval(int v) { val = v; } int getval() const { return val; } void print() const { // cval = 10; // 错误,不能修改成员变量 // setval(888); // 错误,const成员函数不能调用非const方法 std::cout << getval() << std::endl; // const成员函数能调用const函数 std::cout << "val: " << val << ", cval: " << cval << std::endl; } private: int val; const int cval; };
常量对象(Const Objects)
-
定义:常量对象只能调用const成员函数,不能调用非const成员函数。
-
用法:
int main() { const Demo obj(10); // obj.setval(20); // 错误,不能调用非const成员函数 std::cout << obj.getval() << std::endl; // 可以调用const成员函数 obj.print(); return 0; }
总结
-
常量指针(Pointer to Constant):指针指向的值是常量,不能通过该指针修改值,但可以改变指针的指向。
-
指针常量(Constant Pointer):指针本身是常量,不能改变指针的指向,但可以通过指针修改所指向的值。
-
常量成员变量(Const Member Variables):在对象创建时初始化,之后不能修改。
-
常量成员函数(Const Member Functions):不能修改对象的成员变量,只能调用其他const成员函数。
-
常量对象(Const Objects):只能调用const成员函数,不能调用非const成员函数。

被折叠的 条评论
为什么被折叠?



