const/template/friend
const/*学生类(Student) const的用法 3_7_Student_const.cpp*/ #includeiostream #includestring using namespace std; class Student { public: Student(string n,string i):name(n) //name是常数据成员,只能采用成员列表初始化 { // name = n; id = i; } void showStudent() //输出函数 { cout"name:\t"name"\tid\t"idendl; cout"no const showStudent"endl; } void showStudent() const //常成员函数 { cout"name:\t"name"\tid\t"idendl; // modifyStudent();//error // id = "F11118"; // name = "Tony";//error cout"const showStudent"endl; } void modifyStudent() { // name = "Tony"; //error id = "F11112"; //可以 } string getName() { return name; } private: const string name; //常数据成员 string id; }; int main() { Student s1("Simon","F11111");//s1是普通对象 s1.showStudent(); s1.modifyStudent(); s1.showStudent(); const Student s2("Harry","F11115"); s2.showStudent(); return 0; }核心 const 知识点总结常数据成员const string name必须在构造函数初始化列表初始化,构造函数体内赋值无效。对象整个生命周期,name 不能修改。常成员函数void showStudent() const函数末尾加const,函数内不能修改成员变量,也不能调用普通非 const 成员函数。const 对象只能调用 const 成员函数;普通对象优先调用非 const 版本。const 对象const Student s2(...)s2 的所有成员都视为只读,禁止调用非 const 成员函数(如modifyStudent())。运行输出:name: Simon id F11111 no const showStudent name: Simon id F11112 no const showStudent name: Harry id F11115 const showStudent-------------------------------------------------