C++的关键字const

常量声明

const用于声明时必须进行初始化,大致格式为:<数据类型> const <常量名> = <值>
const <数据类型><常量名> = <值>。此时const的位置不影响语义

声明一个常量:

const 可以用于声明一个变量为常量。常量的值在声明后不能被修改

int const a = 10;  // read-only variable  
int const  b;       // 错误!!!必须进行初始化
a++;               // 错误!!!不能对值进行更改
const int c = 10;  // read-only variable  

声明类的成员变量为常量

在类的声明中,可以使用 const 来声明成员变量为常量。这意味着不能修改这些成员的值

class MyClass {
public:
	int const a = 1;  // read-only variable  
	int const b;      // 错误!!!必须进行初始化 
	const int c = 1;  // read-only variable  
	void func();
	void print_a();   
};
void MyClass::func() {
	this->a++;            // 错误!!!不能对值进行更改
}
void MyClass::print_a() {
	cout<<"a = "<<a<<endl; 
}
int main() {
	MyClass c;
	return 0;
}

声明常量数组:

const修饰数组。那么数组中的所有元素都被视为常量,不能被修改

int const arrayA[5] = {1, 2, 3, 4, 5};
int const arrayB[5];                   // 错误!!!必须进行初始化
A[0] = 5;                              // 错误!!!数组中所有值能进行更改
const int arrayC[4]={1,2,3};

const和指针搭配

此时const的位置不同将会导致语义不同

声明常量指针

const 可以用于指针的声明。表明指针的值不可更改,即指向不可更改

  • 指针是一种特殊的数据类型,指针的值是某个数据的内存地址,即指针指向该数据
int a = 10;
int b = 20;
int* const ptr = &a;
int* const p;   // 错误!!!常量指针声明时必须初始化
ptr = &b;        // 错误!!!常量的值初始化后不可改变,即常量指针的指向不可更改

声明指针常量

此时指针的值可以改变,即指针指向可以更改,但是指向的内存地址保存的内容不可更改

可以这么理解,由于 const intint cosnt语义相同,
那么int const* ptr = &a; const int* ptr = &a;语义相同。const修饰的是* ptr

int a = 10;
int b = 20;
int const* ptr = &a; // 等价于 const int* ptr = &a;
  

函数中,声明参数变量为常量

const 可以用于函数参数的声明,该参数不能被修改,可以防止意外修改传入的参数值

 void print(const int& num) { //调用函数时已经对参数进行初始化了
 	num++;                    // 错误!!!不能对值进行更改
    cout << num << endl;
}
// 也可以这样
void print(int const& num) { //调用函数时已经对参数进行初始化了
 	num++;                    // 错误!!!不能对值进行更改
    cout << num << endl;
}

声明常量类成员函数

常量类成员函数不可以修改所有的成员变量

class myClass {
public:
//	const int a = 1;
	int age;
	
	void setAge() const; 
	void changeAge();
};
void myClass::setAge() const{
	age = 10;     // 错误!!!常量类成员函数不可以修改所有的成员变量
}

void myClass::changeAge() {
	age = 10;
}

相关推荐

  1. C++关键字const

    2024-07-17 19:42:04       19 阅读
  2. C/C++关键字详解-----`const`使用

    2024-07-17 19:42:04       41 阅读
  3. C 语言中 const 关键字详解

    2024-07-17 19:42:04       43 阅读
  4. c++关键字const

    2024-07-17 19:42:04       46 阅读
  5. C++ const关键字

    2024-07-17 19:42:04       35 阅读
  6. C++ const 关键字详解

    2024-07-17 19:42:04       25 阅读
  7. c++ const关键词介绍

    2024-07-17 19:42:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 19:42:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 19:42:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 19:42:04       45 阅读
  4. Python语言-面向对象

    2024-07-17 19:42:04       55 阅读

热门阅读

  1. 服务端正常启动了,但是客户端请求不到

    2024-07-17 19:42:04       17 阅读
  2. QTextBrowser设置行号

    2024-07-17 19:42:04       19 阅读
  3. Webhook 是什么?详解其工作原理

    2024-07-17 19:42:04       17 阅读
  4. SortTracker稳定追踪算法

    2024-07-17 19:42:04       15 阅读
  5. 开发一款数字芯片的流程

    2024-07-17 19:42:04       18 阅读
  6. bignumber.js库,解决前端小数精度问题

    2024-07-17 19:42:04       17 阅读
  7. Developing Secure Software CMP7038B

    2024-07-17 19:42:04       19 阅读
  8. 递推算法及解题套路

    2024-07-17 19:42:04       20 阅读