C++ const 修饰类用法
1.修饰数据成员
初始化位置只能在参数列表里面
被const修饰的数据成员不能被修改
2.修饰成员函数
位置 函数申明之后,实现体之前
意义: const承诺不会修改数据成员
能访问const和非const数据成员 但不能修改 非const数据成员
只能访问const成员函数
构成重载
const对象只能调用const成员函数。
非const成员对象,优先调用非const成员函数,若无则可调用const成员函数
3.修饰类对象
const 修饰函数,是从函数层面,不修改数据
const修饰对象,是从对象层面,不修改数据,只能调用const成员函数
#include <iostream>
using namespace std;
class A
{
public:
A(int v)
:val(v)
{}
void dis() const
{
cout << val << endl;
// x = 200; 不可以
/***********/
int a;
a = 100; //可以
/***********/
// print(); 也不可以
}
void print()
{
x = 100;
}
/******构成重载*******/
void play()
{
cout << "void play()" << endl;
}
void play()const
{
cout << "void play() const" << endl;
}
void plays()const
{
cout << "void play() const" << endl;
}
private:
const int val ;
// 新版可以这样初始化 const int val = 10;
int x, y;
};
int main()
{
//const int i; 必须初始化
A a(5);
a.dis();
a.play();
a.plays(); //非const成员对象,优先调用非const成员函数,若无则可调用const成员函数
const A b(5);
b.play(); //const对象只能调用const成员函数
system("pause");
return 0;
}