转载请注明文章出处: tlanyan.me/cpp-functio…
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
中新增,指示函数返回 常量表达式 (可以简单理解为返回 字面量 )。
函数名后
置于函数名后的修饰符有两种,第一种使用等号(
=
),第二种直接修饰。
-
使用等号
此类较为简单,总共有三种:
-
=0
:只能用于虚函数,表示函数为 纯虚函数 。 -
=default
:C++11
新增,只能用于编译器提供默认实现的 特殊成员函数 ,指示 使用默认实现 。 -
=delete
:C++11
新增,只能用于编译器提供默认实现的 特殊成员函数 ,指示编译器应该 删除该函数的默认实现 。
-
-
直接修饰
种类繁多,本人已知的修饰符包括:
-
const
表示函数不会修改对象(或者说调用期间对象不变),注意不包括
mutable
修饰的成员变量,可参考本人之前文章: C++中的mutable和volatile 。 -
volatile
类似于
const
修饰的函数,表示对象状态 可能随时会改变 ;const
修饰的函数内只能调用自身的const
成员方法,同理volatile
函数内也只能调用自身volatile
成员函数。
-