标签:
本文参考:http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/#ibm-pcon
C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。对于 deleted 函数, 编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性
C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。
defaulted函数的提出
1. 减轻程序员的编程工作量;2. 获得编译器自动生成的默认特殊成员函数的高的代码执行效率。
程序员只需在函数声明后加上“=default;
”,就可将该函数声明为 defaulted 函数,编译器将为显式声明的defaulted 函数自动生成函数体。
deleted函数的提出
为了能够让程序员显式的禁用某个函数,C++11 标准引入了一个新特性:deleted 函数。程序员只需在函数声明后加上“=delete;
”,就可将该函数禁用。
deleted 函数特性还可用于禁用类的某些转换构造函数,从而避免不期望的类型转换。
deleted 函数特性还可以用来禁用某些用户自定义的类的 new
操作符,从而避免在自由存储区创建类的对象。
注意:
只有4类特殊成员函数才能被声明为defaulted函数,而deleted函数特性并无此限制
C++11 标准新特性:Defaulted 和 Deleted 函数
标签:
原文地址:http://www.cnblogs.com/randall235/p/5418268.html