cpp11默认和删除函数
时间: 2023-06-01 15:02:56 浏览: 162
C++11引入了默认和删除函数,这两个概念可以帮助程序员更加精细地控制类的行为。
默认函数是指那些编译器可以自动生成的函数,包括默认构造函数、拷贝构造函数、拷贝赋值运算符和析构函数。在C++11之前,如果一个类需要这些函数,程序员必须自己手动编写。而在C++11中,如果程序员不编写这些函数,编译器会自动生成默认的版本。例如,下面的代码中,由于没有显式定义构造函数和析构函数,编译器会自动生成默认的版本:
```
class MyClass {
public:
// 默认构造函数
MyClass() = default;
// 拷贝构造函数
MyClass(const MyClass& other) = default;
// 拷贝赋值运算符
MyClass& operator=(const MyClass& other) = default;
// 默认析构函数
~MyClass() = default;
};
```
程序员可以通过`default`关键字来显式声明一个函数为默认函数。
删除函数是指那些程序员不希望被调用的函数。在C++11之前,如果一个函数不希望被调用,程序员必须将其声明为`private`并不给出实现,或者将其声明为`private`并抛出异常。而在C++11中,程序员可以使用`delete`关键字来显式声明一个函数为删除函数。例如,下面的代码中,我们显式声明拷贝构造函数和拷贝赋值运算符为删除函数,表示我们不希望这些函数被调用:
```
class MyClass {
public:
// 默认构造函数
MyClass() = default;
// 删除拷贝构造函数
MyClass(const MyClass& other) = delete;
// 删除拷贝赋值运算符
MyClass& operator=(const MyClass& other) = delete;
// 默认析构函数
~MyClass() = default;
};
```
程序员可以通过`delete`关键字来显式声明一个函数为删除函数。
总的来说,C++11中的默认和删除函数可以帮助程序员更加精细地控制类的行为,使代码更加清晰易懂。
阅读全文