1.const数据成员
(1)const数据成员必须使用初始化参数列表
(2)不能修改
(3)不能修改必须初始化
class MM {
public:
	MM() {}
	MM(int age, string name) :age(age), name(name) {}
	~MM() {
		cout << "调用析构函数" << endl;
	}
	void print() {
		cout << age << name << endl;
	}
private:
	int age;
	const string name;
};int main() {
	MM mm(25, "wangjianghui");
	mm.print();
	return 0;
}
2.const常成员函数
1.const使用位置:在函数名称后面
2.常成员函数特点:函数中不可修改常成员函数
3.常成员函数与普通函数可同时存在
4.对象
(1)普通对象优先使用普通函数
(2)常对象只能调用常成员函数
1.代码
(1)类
class MM { public: MM() {} MM(int age, string name) :age(age), name(name) {} ~MM() {} void print(); void print()const; void max(MM mm)const; void min(MM mm); private: int age; string name; };(2)函数实现
void MM::print() { cout <<"普通函数: " << age << name << endl; } void MM::print()const {//const使用位置:在函数名称后面 cout << "常函数: "<< age << name << endl; } void MM::max(MM mm)const { if (age > mm.age) { cout << age << name << "更大" << endl; } else { cout << mm.age << mm.name << "更大" << endl; } } void MM::min(MM mm) { if (age < mm.age) { cout << age << name << "更小" << endl; } else { cout << mm.age << mm.name << "更小" << endl; } }(3)main
int main() { MM mm1(18,"sadf"); const MM mm2(20, "agre"); MM const mm3(30, "wers"); //输出 mm1.print();//普通对象优先使用普通函数 mm2.print();//常对象只能调用常成员函数 mm3.print(); //比较 mm1.max(mm2);//正确,普通对象可以使用常函数 mm1.min(mm2); mm1.max(mm3); mm1.min(mm3); mm2.max(mm3); //mm2.min(mm3);//错误,常对象不可使用普通函数 return 0; }结果:
补充:const char *、char* const
1.const char* s; 指向常量的指针,故无法用指针去修改常量。
const char* str1="Ilove";//(const修饰char*)指向常数,不可通过指针修改 //str1[0] = 'a';//错误,无法通过指针修改2.char* const s; 指针本身是常量,故指针不可修改指向。
char s[] = "Ilove"; char* const str2 = s;//(const修饰str2)指针为常数,不可修改指针 str2[0] = 'a'; //str2 = nullptr;//错误,指针指向(地址)无法修改以下有详细的解释
const char *、char const*、char *const三者的区别 - 知乎 (zhihu.com)










![[嵌入式系统-33]:RT-Thread -18- 新手指南:三种不同的版本、三阶段学习路径](https://img-blog.csdnimg.cn/direct/8f13e2ae00a346afaf1720ea4c921455.png)





![Python算法题集_实现 Trie [前缀树]](https://img-blog.csdnimg.cn/direct/5a897d6e99aa4f639286febc56714d68.png#pic_left)



