inline, const, virtual, static四个关键字使用时应该放在哪里?

本文详细介绍了C++中inline, const, virtual, static四个关键字在声明和定义时的位置要求,以及它们在类声明、成员函数、静态成员等场景中的应用和规范。强调了inline函数的编译时展开特性,const关键字在声明和定义处的必要性,virtual关键字只应用于类成员函数的声明,并讨论了static成员函数和数据成员的声明、定义和初始化规则。" 139143841,9247363,Git进阶:深度解析git rebase与git fetch,"['git', '版本控制', '代码管理']
摘要由CSDN通过智能技术生成

注意,下面说的“声明”指的是非定义处的声明,别跟我扯什么“所有的定义都是声明”什么的。

1. inline
inline可以放在声明处,也可以放在定义处,也可以两个地方都放。但是inline是属于实现部分的内容,不应该出现在接口处,即类的使用者从使用的角度不需要知道是不是inline的。所以,编程规范是inline关键字应该只出现在定义处,而不应该在声明处,所以class body里不应该出现“inline”。这一点在C++ FAQ(http://www.parashift.com/c++-faq/)[9] Inline functions中有提到。BTW,所有在class body中实现的函数都是隐含inline的,因而在class body里实现的短函数也不需要显式的写上“inline”。所以可以得出结论:任何情况下都不应该在class body里看到“inline”这个关键字(注释除外)。新手也许会问,如果我在a.cc里定义了一个inline函数fun(),在b.cc里forward declare并使用了fun。按照编程规范,b.cc中对fun()的declaration处不标inline,那b.cc中使用fun()时,编译器怎么知道该把fun()内联展开呢?答案是inline函数不能像普通函数那样在另一文件中forward declare后调用,使用inline函数的唯一方法就是include(直接或间接)其定义,所以在定义处标inline就够了。

定义类的时候,如

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值