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、