用const修饰的类对象叫做常对象,
用const修饰的成员函数叫常成员函数,
用const修饰的成员变量叫常成员变量,
常对象:
型如:
const <类名> <对象名>
<类名> const <对象名>
说明:
1.常对象内的成员变量值不可修改,所以一定要在定义对象时初始化。
2.常对象只可以调用常成员函数,但是非常对象可以调用常成员函数。
3.通过常成员函数只能进行读取变量值,不能修改任何成员变量值。
常成员函数:
型如:
<类型标志符>函数名(参数表)const;
说明:
1.const是函数的一部分,所以在实现时也是需要加入const不能省略。
2.常成员函数可以被常对象和普通对象调用。
3.常成员函数内不可以修改任何成员变量的值。
4.常成员函数只可以调用对象内其他常成员函数。
常成员变量:
型如:
const <变量类型> <变量名>
<变量类型> const <变量名>
说明:
1.常成员变量必须在构造函数中初始化(通过列表初始化)。
2.常成员变量不能被赋值,即初始化后不能被改变。
下图代码+运行结果:
#include<iostream>
#include<string>
using namespace std;
class Person
{
private:
int age;
string name;
public:
Person(const int,const string);
void show();
void show()const;
void show111()const;
~Person();
};
Person::Person(const int x,const string y):age(x),name(y)
{}
void Person::show()
{
cout<<age<<" "<<name<<endl;
cout<<"我是普通成员函数"<<endl;
}
void Person::show111()const
{
cout<<"常成员函数调用了我"<<endl;
}
void Person::show()const
{
cout<<age<<" "<<name<<endl;
show111();
cout<<"我是常成员函数"<<endl;
}
Person::~Person()
{}
int main()
{
const Person p=Person(23,"AAAAA");
p.show();
}

|