设为首页 加入收藏

TOP

C++中的默认函数与default和delete用法
2014-11-23 23:22:55 来源: 作者: 【 】 浏览:8
Tags:默认 函数 default 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过了,那么重载该函数也是非法的,该函数我们习惯上称为删除函数。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python 并发编程之使用多线程和多.. 下一篇C++11多线程编程之互斥量

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: