1、放在类成员函数最后

作用:[如果类的成员函数后面加了const关键字,说明这个函数是不能改变类中的成员变量的]

写法:

void A::f() 
void A::f() const ---算重载

注意点:

当类中只有函数的const或非const版本存在的情况下:
非const对象可以调用const成员函数或非const成员函数;
const对象只能调用const成员函数,直接调用非const函数时编译器会报错;

 

当类中函数的两个重载版本都存在的情况下:
const对象默认调用const成员函数,非const对象默认调用非const成员函数;
若非const对象想调用const成员函数,则需显式转化,如((const A)a).fun();
若const对象想调用非const成员函数,同理const_cast<A&>(A).fun();

#include <iostream>

class A{
public:
	int fun() const 
	{
		return 1;
	}

	int fun() 
	{
		return 2;
	}

	void display()
	{
		std::cout << fun() << std::endl;//默认调用了函数fun的非const版本
	}
};

int main() {
	A  a;
	const A  b;

	a.display();
	std::cout << ((const A&)a).fun() << std::endl;
	std::cout << const_cast<A&>(b).fun() << std::endl;
	return 0;
}

  

 

 

2、