1、放在类成员函数最后
作用:[如果类的成员函数后面加了const关键字,说明这个函数是不能改变类中的成员变量的]
写法:
1 | void A::f() <br><em id= "__mceDel" > void A::f() const ---算重载</em> |
注意点:
当类中只有函数的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();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #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、
标签:
c++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)