const 修饰变量、修饰函数参数
//#include “iostream”
using namespace std;
// const 修饰变量
int main()
{
/*
// 1.
cout << “第1种情况” << endl;
int a = 1;
const int b = a;
cout << b << endl;
// b = 4; // b是const修饰 只具有只读属性, 所以不可被修改 Error
*//*
// 2.
cout << “第2种情况” << endl;
int a = 1;
int b = 2;
const int* c = &a;
// const 修饰 int* 所以指针c所指向的数据不可被修改,但是c存储的地址可以被修改
// *c = 10; // *c 不可被修改,只读
cout << &a << endl;
cout << c << endl;
cout << *c << endl;
// *c = 100; 不能通过节引用的方法直接修改c
c = &b; // 可以通过修改指针的地址实现对指针变量的修改,
cout << c << endl;
cout << *c << endl;
*//*
//3.
// int* const d 表示d存储的地址是常量不可被修改,但是d地址的指向是可以被修改的(通过*解引用实现)。
int a = 1;
cout << “第3种情况” << endl;
int* const d = &a; // const 修饰 d 的存储(即地址),表示d不可变,*d可以修改
// d = &b; // 试图修改d的内容,因为d是只读的。 Error
cout << *d << endl;
cout << d << endl;
*d = 100; // 修改d的地址的指向
cout << d << endl;
cout << *d << endl;
*/cout << “第4种情况” << endl;
int f = 10;
const int* const e = &f;
cout << &f << endl;
cout << e << endl;
cout << *e << endl;
int g = 11;
e = &g; // e只读
*e = 111; // *e只读return 0;
}
2.const 修饰函数返回值
1. 全局函数
参考const修饰变量。
2. const修饰成员函数
const修饰成员函数,表示该函数不可对成员变量进行修改。除了mutable修饰的成员变量。
例如: const int* add (const int m,int n) const;
第一个const 表示:函数的返回值的指向不可被修改。
第二个const 表示:函数参数m是不可被修改的。
第三个const 例外:这种通常应用在成员函数中,当成员变量不是mutable类型时,表示成员变量不可被修改。