C++中的默认函数与default和delete用法
来源:互联网 发布:js基础类型 编辑:程序博客网 时间:2024/05/21 09:08
在pixhawk拜读中发现如下写法:
/* non-copyable */
OwnPtr(const OwnPtr<T> &other) = delete;
查找的解释如下:
一、类中的默认函数
a.类中默认的成员函数
1.默认构造函数
2.默认析构函数
3.拷贝构造函数
4.拷贝赋值函数
5.移动构造函数
6.移动拷贝函数
b.类中自定义的操作符函数
1.operator
2.operator&
3.operator&&
4.operator*
5.operator->
6.operator->*
7.operator new
8.operator delete
同时C++规定,一旦程序员实现了这些函数的自定义版本,则编译器不会再自动生产默认版本。注意只是不自动生成默认版本,当然还是可手动生成默认版本的。当我们自己定义了待参数的构造函数时,我们最好是声明不带参数的版本以完成无参的变量初始化,此时编译是不会再自动提供默认的无参版本了。我们可以通过使用关键字default来控制默认构造函数的生成,显式地指示编译器生成该函数的默认版本。比如:
class MyClass
{
public:
MyClass()=default; //同时提供默认版本和带参版本,类型是POD的
MyClass(int i):data(i){}
private:
int data;
};
有些时候我们希望限制默认函数的生成。典型的是禁止使用拷贝构造函数,以往的做法是将拷贝构造函数声明为private的并不提供实现,这样当拷贝构造对象时编译不能通过,C++11则使用delete关键字显式指示编译器不生成函数的默认版本。比如:
class MyClass
{
public:
MyClass()=default;
MyClass(const MyClass& )=delete;
......
}
当然,一旦函数被delete过了,那么重载该函数也是非法的,该函数我们习惯上称为删除函数。
0 0
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++中的默认函数与default和delete用法
- C++ -- 默认函数与default和delete用法
- C中的malloc()函数和free()函数与C++中的new()函数和delete()函数详解
- 构造函数delete和default关键字分析
- C++构造函数的default和delete
- [C++]default constructor默认构造函数
- 拷贝构造,深度拷贝,关于delete和default相关的操作,explicit,类赋初值,构造函数和析构函数,成员函数和内联函数,关于内存存储,默认参数,静态函数和普通函数,const函数,友元
- C++ Primer中的陌生概念二:default默认构造函数
- 读书笔记-Thinking in C++-第7章 函数重载和默认参数Function Overloading &Default Arguments
- C++中的new和delete用法
- C++:new和delete的用法
- CS0266号错误是什么
- Excel常用文本操作
- 关于安卓手机微信访问https链接白屏的问题
- JAVA 读取EXCEL 文件
- 【原创】SqlServer、利用递归查询、将日期范围转换为日期表
- C++中的默认函数与default和delete用法
- secureCRT无法成功连接Ubuntu
- H5页面防微信通讯录按字母搜索定位
- JSTL的fmt标签库与fn方法库
- 用nginx搭简单反向代理服务器
- 107. Binary Tree Level Order Traversal II\102. Binary Tree Level Order Traversal\103. BT Zigzag
- CentOS6.5安装nginx1.1.2和mysql5.7
- 2017年2月反思-对于材料标准体系及相关系统架构问题的思考
- Docker简明教程