C++中函数修饰符的示例分析
这篇文章给大家分享的是有关C++中函数修饰符的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
成都创新互联是专业的巴林左旗网站建设公司,巴林左旗接单;提供成都网站制作、做网站、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行巴林左旗网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
函数名前
1、返回值类型
返回值类型是C++中定义函数的必备部分,这些修饰符包括void,(unsigned) int,bool等内置基本数据类型和自定义类型,也包括修饰返回值const关键字(如const int*),还包括C++11中新增的类型自动推导auto关键字。
2、 template
template关键字声明函数是模板函数。
3、 virtual
virtual关键字声明函数是虚函数,可被子类覆盖。
4、 inline
inline关键字提示编译器应将函数内联。
5、 static
static修饰类的成员函数时指示函数是静态成员函数,不从属于具体对象;修饰单独的函数时,限定函数的可见范围为本文件内。
6、 extern
extern关键字声明一个定义在外部的函数
7、 explicit
explicit关键字在C++11新增,只用于构造函数,指定构造函数要显式定义,不能隐式转换。
8、 friend
friend关键字声明类的友元函数,在函数内可直接访问对象的私有或受保护成员及成员函数。
9、 constexpr
C++11中新增,指示函数返回常量表达式(可以简单理解为返回字面量)。
函数名后
置于函数名后的修饰符有两种,第一种使用等号(=),第二种直接修饰。
1、使用等号
此类较为简单,总共有三种:
=0:只能用于虚函数,表示函数为纯虚函数。
=default:C++11新增,只能用于编译器提供默认实现的特殊成员函数,指示使用默认实现。
=delete:C++11新增,只能用于编译器提供默认实现的特殊成员函数,指示编译器应该删除该函数的默认实现。
2、直接修饰
种类繁多,本人已知的修饰符包括:
const
表示函数不会修改对象(或者说调用期间对象不变),注意不包括mutable修饰的成员变量,可参考本人之前文章:C++中的mutable和volatile。
volatile
类似于const修饰的函数,表示对象状态可能随时会改变;const修饰的函数内只能调用自身的const成员方法,同理volatile函数内也只能调用自身volatile成员函数。
&
C++11引入的功能,左值引用限定符,指示函数只能被左值对象调用。
&&
C++11引入,右值引用限定符,指示函数只能被右值调用。如果函数没有引用限定符修饰,左值和右值均可调用。一个引用限定例子:
#includestruct 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 ” }
override
C++11引入的功能,声明成员函数覆盖父类的虚函数。声明为override后,子类声明时可不写virtual。
final
C++11引入,指示函数是最终实现,子类不应当再定义或覆盖,可与override同时使用。
noexcept
C++11引入,修饰函数是否会抛出异常。
throw
指示函数抛出异常及类型,C++11起被废弃。
感谢各位的阅读!关于“C++中函数修饰符的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
网站题目:C++中函数修饰符的示例分析
标题URL:http://azwzsj.com/article/gsjcsh.html