简介:类的常成员分为类的常成员对象,类的常成员变量,类的常成员函数。
- 类的常成员对象只能调用类的常成员函数,不能调用不是类的常成员函数。
- 类的常成员变量必须使用类的成员初始化列表来初始化。
const int getAge();只是普通的类成员函数,而int getAge()const才是类的常成员函数。所以,书写一定要注意区分。
代码学习:(简单想想,其实const 的使用,就是你所要定义的数据是否需要改变,如果不想让数据被改变,那么就cosnt。)
//常量成员:类的常量数据成员,类的常量函数成员 #include<iostream> using namespace std; class MyStu{ int age;//对于一个学生,它的年龄会随着时间改变, const char sex;//但是,它的性别是不可改变的。所以在定义性别时要加上const //类的常量数据成员 public: //类的常量初始化成员必须使用类的成员初始化列表。否则报错。 MyStu() :sex('w'){ age = 0; } MyStu(char s):sex(s){ age = 0; } void init(int age){ this->age = age; } //const int getAge(){ return age; }//不是类的常量函数成员,只是一个普通的类成员函数, //这个函数的返回值是一个const int int getSex()const{ return sex; } int getAge()const{ return age; }//类的常量函数成员 ~MyStu(){ } }; const int add(int a,int b){ return a + b; } int main(){ const int a=10;//普通的常量变量必须初始化赋值 cout << a << endl; //a = 11;不能改动常成员变量的值 cout << "----------------------" << endl; const int c = add(1,2);//普通常量函数使用这种写法,而不是在函数前加const; cout << c << endl; cout << "----------------------" << endl; MyStu s(23);//调用带参构造 cout << s.getAge() << endl; cout << "----------------------" << endl; //当对象未被定义为一个常量对象时 cout << "当对象未被定义为一个常量对象时:" << endl; MyStu s1; s1.init(23); cout <<s1.getAge()<< endl; cout << "----------------------" << endl; //当对象被定义为一个常量对象时 cout << "当对象被定义为一个常量对象时:" << endl; const MyStu s2; //s2.init(23);//常量对象是无法调用非常量函数成员的 cout << s2.getAge() << endl;//常量对象只能调用常量函数成员 return 0; }
结果: