C++ 知识量:19 - 82 - 316
在C++中,const是一个关键字,它用于限定一个变量或对象的值不能被修改。通过使用const关键字,可以确保一个变量或对象在整个程序执行期间保持其初始值,不会被修改。
下面是一些使用const关键字的示例:
1. 声明一个常量整数:
const int MY_CONST = 10;
在上面的代码中,MY_CONST被声明为一个常量整数,其值为10。由于它被声明为常量,因此不能被修改。
2. 声明一个常量指针:
int myVar = 10; const int* ptr = &myVar;
在上面的代码中,ptr是一个指向整数的指针,它指向了myVar。由于ptr被声明为常量指针,它不能被用来修改所指向的值。
3. 声明一个常量引用:
int myVar = 10; const int& ref = myVar;
在上面的代码中,ref是一个常量引用,它引用了一个整数变量myVar。由于它是常量引用,因此它不能用来修改所引用的值。
使用const关键字可以帮助确保代码的安全性和稳定性,因为它防止一个变量或对象被意外修改。此外,使用const关键字还可以提高代码的可读性和可维护性。
在C++中,指向常量的指针(pointer to constant)是指针变量指向一个常量对象的地址。通过这种指针,可以读取该常量对象的内容,但不能修改它。
下面是一个指向常量的指针的示例:
const int num = 10; int* ptr = # // 错误,num是常量 int const* ptr = # // 正确,指向常量的指针
在上面的代码中,int const* ptr声明了一个指向整型常量的指针,它指向了变量num的地址。由于num是常量,因此不能通过ptr修改它。但是,可以读取num的值,例如cout << *ptr << endl;将输出10。
注意:指向常量的指针本身也可以被声明为常量指针,即const int* const ptr,这样它就不能被修改了。
在C++中,顶层const指的是在声明变量或对象时直接在类型前面加上const关键字,表示这个变量或对象是常量,不能被修改。
例如,下面的代码声明了一个const整型变量:
const int a = 10;
这个变量a是一个常量,它的值不能被修改。如果试图修改a的值,编译器会报错。
除了整型变量,其他类型的变量也可以使用顶层const修饰,例如:
const double b = 3.14; const char* str = "hello"; const std::string s = "world";
这些变量b、str和s都是常量,它们的值不能被修改。
需要注意的是,顶层const只适用于变量和对象,不能用于函数参数或返回值。函数参数和返回值必须通过引用或指针来修饰。
在C++中,底层const指的是在类或结构体的成员函数中,将const关键字放在函数的参数列表后面,表示该函数不会修改类的任何数据成员。
例如,下面的代码定义了一个名为MyClass的类,其中包含一个底层const成员函数print():
class MyClass { public: void print() const { cout << m_data << endl; } private: int m_data; };
在print()函数中,使用了底层const修饰符,表示该函数不会修改类的任何数据成员,包括m_data。因此,在底层const成员函数中,可以访问类的所有数据成员,但不能修改它们。
需要注意的是,底层const修饰符只适用于成员函数,不能用于类的数据成员或全局变量。
C++中的常量表达式是指在编译时期就能确定的表达式,其值不能被改变。常量表达式通常使用常量或字面值来表达,例如:
const int a = 10; // 定义一个整型常量a,值为10 const double pi = 3.14159; // 定义一个双精度浮点型常量pi,值为3.14159 const char* str = "hello"; // 定义一个指向字符串常量的指针str,值为"hello"
除了使用常量或字面值外,常量表达式还可以使用一些常量表达式函数来计算,例如:
const int len = 5; const int area = len * 2; // 使用常量表达式计算面积,值为10
需要注意的是,常量表达式的值必须在编译时期就能确定,因此不能使用变量或非常量表达式来表达。同时,由于常量表达式的值不能被改变,因此不能在运行时期修改它们的值。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6