c++const限定符保姆级详解

c++中const详解

重点const修饰规则

const默认是修饰左边, 若左边没有东西则修饰右边

正解
const int * a;
这个例子中const左边没有值, 所以const修饰右边, 则实际修饰的是右边的int(其他数据类型亦可), 所以这是个常量指针, 代表可以修改指针的指向, 但是不能修改指针指向的内存中存储的数据;

int const * a;
这个例子中const左边有东西, 则实际修饰的是左边的int(其他数据类型亦可), 所以这是个常量指针, 代表可以修改指针的指向, 但是不能修改指针指向的内存中存储的数据;

int* const a;
这个例子中,const的左边有东西, 则实际修饰的是*, 所以这是个指针常量,代表这个指针的指向不能更改,但是指向的内存中存储的数据可以更改;

const int add(int a, int b);
这个例子中const左边没有值,所以修饰的是右边的int, 代表这个函数返回值不能修改

int add(const int a, const intb);
代表a与b在函数中不能被修改值

int A::add(int a,int b) const;
const左边是个函数,所以const修饰的是函数, 代表这个函数不会更改任何A类中的变量的值;

注意:非成员函数不能使用cv限定符修饰(cv是const和volatile的首字母缩写)

-------------- const修饰指指针别名对于初学者通常有一个陷阱 如下例
—ex:

using namespace std;
using pstr = char *;
const pstr a = nullptr;
//经过重新命名后 *并不是声明符的一部分 pstr基本数据类型为指针
//a为指向char的常量指针 而非指向常量char的普通指针

你可能感兴趣的:(c++,开发语言)