内容简介:转载请注明文章出处:按修饰符的位置分为函数名前与函数名后两种,以下分别做介绍。
转载请注明文章出处: https://tlanyan.me/cpp-function-modifier-summary/
C++
博大精深,而且不断拥抱新的变化。本文简要总结一下 C++
中函数的修饰符,其中部分在实际中极少用到。
按修饰符的位置分为函数名前与函数名后两种,以下分别做介绍。
函数名前
-
返回值类型
返回值类型是
C++中定义函数的必备部分,这些修饰符包括void,(unsigned) int,bool等内置基本数据类型和自定义类型,也包括修饰返回值const关键字(如const int*),还包括C++11中新增的类型自动推导auto关键字。 -
templatetemplate关键字声明函数是 模板函数 。 -
virtualvirtual关键字声明函数是 虚函数 ,可被子类覆盖。 -
inlineinline关键字提示编译器应将函数 内联 。 -
staticstatic修饰类的成员函数时指示函数是 静态成员函数 ,不从属于具体对象;修饰单独的函数时,限定函数的 可见范围为本文件内 。 -
externextern关键字声明一个定义在 外部 的函数 -
explicitexplicit关键字在C++11新增,只用于 构造函数 ,指定构造函数要 显式定义 ,不能 隐式转换 。 -
friendfriend关键字声明类的友元函数,在函数内可 直接访问 对象的私有或受保护成员及成员函数。 -
constexprC++11中新增,指示函数返回 常量表达式 (可以简单理解为返回 字面量 )。
函数名后
置于函数名后的修饰符有两种,第一种使用等号( =
),第二种直接修饰。
-
使用等号
此类较为简单,总共有三种:
-
=0:只能用于虚函数,表示函数为 纯虚函数 。 -
=default:C++11新增,只能用于编译器提供默认实现的 特殊成员函数 ,指示 使用默认实现 。 -
=delete: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 << "lvalue\n"; } void f() &&{ std::cout << "rvalue\n"; } }; int main(){ S s; s.f(); // 打印“ lvalue ” std::move(s).f(); // 打印“ rvalue ” S().f(); // 打印“ rvalue ” } -
overrideC++11引入的功能,声明成员函数 覆盖 父类的虚函数。声明为override后,子类声明时可不写virtual。 -
finalC++11引入,指示函数是 最终 实现,子类不应当再定义或覆盖,可与override同时使用。 -
noexceptC++11引入,修饰函数是否会抛出 异常 。 -
throw指示函数抛出异常及类型,
C++11起被 废弃 。
-
总结
本文简要概括的列出了 C++
定义函数的修饰符。需要注意的是,严格来说上述内容中并不全是修饰符,部分仅是语法结构。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- C++ 中const修饰虚函数实例详解
- c# – 为什么具有受保护修饰符的函数可以被覆盖并且可以在每个位置访问?
- Go语言的修饰器编程
- GO语言的修饰器编程
- decrator(修饰器)的业务应用
- 《Python有什么好学的》之修饰器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
凸优化
Stephen Boyd、Lieven Vandenberghe / 王书宁、许鋆、黄晓霖 / 清华大学出版社 / 2013-1 / 99.00元
《信息技术和电气工程学科国际知名教材中译本系列:凸优化》内容非常丰富。理论部分由4章构成,不仅涵盖了凸优化的所有基本概念和主要结果,还详细介绍了几类基本的凸优化问题以及将特殊的优化问题表述为凸优化问题的变换方法,这些内容对灵活运用凸优化知识解决实际问题非常有用。应用部分由3章构成,分别介绍凸优化在解决逼近与拟合、统计估计和几何关系分析这三类实际问题中的应用。算法部分也由3章构成,依次介绍求解无约束......一起来看看 《凸优化》 这本书的介绍吧!