const成员:被const修饰的成员变量、非静态成员函数
const成员变量:
- 必须要初始化(类内部初始化),可以在声明的时候直接初始化赋值
- 非static的const成员变量还可以在初始化列表中初始化
const成员函数(非静态):
- const关键字写在参数列表后面,函数的声明和实现都必须带const
- 内部不能修改非静态成员变量
- 内部只能调用const成员函数、static成员函数
- const成员函数和非const成员函数可以构成重载
- 非const对象(指针)优先调用非const成员函数
- const对象(指针)只能调用const成员函数,static成员函数
#include<iostream>
using namespace std;
class Car{
public:
int m_no;
//【1】const成员变量
const int m_price = 0;
const int m_price;
Car():m_price(0) { }
static const int m_price = 0;
//【2】const成员函数
void run() const{
cout << "run()" << endl;
//m_no = 10;//内部不能修改非静态成员变量
//test();内部不能调用非静态成员函数(只能调用const或static成员函数)
}
void run() {}//和const成员函数构成重载
void test(){}
static void test() {}
};
int mian() {
Car car;
car.run();//优先调用void run() {}
Car *p;
p->run();//同上
const Car car;
car.run();//只能调用void run() const{}或static void test(){}
getchar();
return 0;
}
引用类型成员(不考虑static情况):
1.声明时初始化
2.初始化列表初始化
class Car{
int age;
int &m_price = age;
public:
Car(int &price) :m_price(price) { }
};