脚本宝典收集整理的这篇文章主要介绍了C++函数修饰符总结,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
转载请注明文章出处:https://tlanyan.me/cpp-functi...
C++
博大精深,而且不断拥抱新的变化。本文简要总结一下C++
中函数的修饰符,其中部分在实际中极少用到。
按修饰符的位置分为函数名前与函数名后两种,以下分别做介绍。
函数名前
- 返回值类型
返回值类型是C++
中定义函数的必备部分,这些修饰符包括void
,(unsigned) int
,bool
等内置基本数据类型和自定义类型,也包括修饰返回值const
关键字(如const int*
),还包括C++11
中新增的类型自动推导auto
关键字。
-
template
template
关键字声明函数是模板函数。
-
virtual
virtual
关键字声明函数是虚函数,可被子类覆盖。
-
inline
inline
关键字提示编译器应将函数内联。
-
static
static
修饰类的成员函数时指示函数是静态成员函数,不从属于具体对象;修饰单独的函数时,限定函数的可见范围为本文件内。
-
extern
extern
关键字声明一个定义在外部的函数
-
explicIT
explicit
关键字在C++11
新增,只用于构造函数,指定构造函数要显式定义,不能隐式转换。
-
friend
friend
关键字声明类的友元函数,在函数内可直接访问对象的私有或受保护成员及成员函数。
-
constexPR
C++11
中新增,指示函数返回常量表达式(可以简单理解为返回字面量)。
函数名后
置于函数名后的修饰符有两种,第一种使用等号(=
),第二种直接修饰。
-
使用等号
此类较为简单,总共有三种:
-
直接修饰
种类繁多,本人已知的修饰符包括:
-
const
表示函数不会修改对象(或者说调用期间对象不变),注意不包括mutable
修饰的成员变量,可参考本人之前文章:C++中的mutable和volatile。
-
volatile
类似于const
修饰的函数,表示对象状态可能随时会改变;const
修饰的函数内只能调用自身的const
成员方法,同理volatile
函数内也只能调用自身volatile
成员函数。
-
&
C++11
引入的功能,左值引用限定符,指示函数只能被左值对象调用。
-
C++11
引入,右值引用限定符,指示函数只能被右值调用。如果函数没有引用限定符修饰,左值和右值均可调用。一个引用限定例子:
#include <iostream>
struct S {
void f() & { std::cout << "lvaluen"; }
void f() &&{ std::cout << "rvaluen"; }
};
int main(){
S s;
s.f(); // 打印“ lvalue ”
std::move(s).f(); // 打印“ rvalue ”
S().f(); // 打印“ rvalue ”
}
-
override
C++11
引入的功能,声明成员函数覆盖父类的虚函数。声明为override
后,子类声明时可不写virtual
。
-
final
C++11
引入,指示函数是最终实现,子类不应当再定义或覆盖,可与override
同时使用。
-
noexcept
C++11
引入,修饰函数是否会抛出异常。
-
throw
指示函数抛出异常及类型,C++11
起被废弃。
总结
本文简要概括的列出了C++
定义函数的修饰符。需要注意的是,严格来说上述内容中并不全是修饰符,部分仅是语法结构。
以上是脚本宝典为你收集整理的C++函数修饰符总结全部内容,希望文章能够帮你解决C++函数修饰符总结所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。