#include <iostream>
using namespace std;
#if 0
1、const修饰数据成员 成员函数 类对象
2、修饰数据成员的时候:
只能在形参列表里面初始化。
被const修饰的数据成员,不能被修改
3、修饰成员函数:
位置:函数声明之后,实现体之前。要求在声明和定义处都要有const
意义:const 函数承诺,不会修改数据成员
能访问const 和 非const成员,但不能修改修饰 非const数据成员
只能访问const成员函数,也就是咱俩都是const成员函数才能在一起玩
const修饰后还能构成重载
4、修饰类对象
const修饰函数,是从函数层面,不修改数据。
const修饰对象,是从对象层面,不修改数据。只能调用const成员函数。
非const成员对象,优先调用非const成员函数,若无,则可调用const成员函数
;
#endif
class A
{
public:
A(int v)
:val(v) //const修饰数据成员,只能在形参列表里面初始化
{
}
void dis() const
{
cout<<val<<endl;
//x = 200; 这一句就会报错,因为修改了数据成员
//print(); 这一句也会报错
}
void dis() //const修饰成员函数构成重载
{
cout<<val<<endl;
}
void print()
{
x = 100;
}
private:
const int val;
int x;
};
int main()
{
/*A a(5);
a.dis();*/
const A a(5);//const修饰类对象
a.print();//这一句就是错的
a.dis();//这一句正确,这里dis()构成了重载,调用了const成员函数
return 0;
}