码迷,mamicode.com
首页 > 编程语言 > 详细

C++11 标准新特性:Defaulted 和 Deleted 函数

时间:2016-04-21 20:10:08      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

本文参考: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!