C++之关键字default/delete

在 C++11 中引入了 defaultdelete 关键字,它们用于显式地控制类的默认成员函数的生成和删除。

default 关键字:

default 关键字用于显式要求编译器生成默认的特殊成员函数(默认构造函数、拷贝构造函数、移动构造函数、拷贝赋值运算符和移动赋值运算符),即使在用户声明了其他自定义构造函数或拷贝控制成员函数的情况下。

示例:

class MyClass {
public:
    // Default constructor
    MyClass() = default;

    // Copy constructor
    MyClass(const MyClass& other) = default;

    // Move constructor
    MyClass(MyClass&& other) = default;

    // Copy assignment operator
    MyClass& operator=(const MyClass& other) = default;

    // Move assignment operator
    MyClass& operator=(MyClass&& other) = default;

    // Destructor
    ~MyClass() = default;
};

在上面的示例中,使用 = default; 来显式声明了所有特殊成员函数的默认实现。如果没有显式声明这些函数,编译器会自动合成它们。使用 = default; 可以确保这些函数被生成,即使类中有其他的自定义成员函数。

delete 关键字:

delete 关键字用于禁用类的特殊成员函数或普通成员函数,以及禁止特定的函数重载。

示例:

class MyClass {
public:
    // Default constructor
    MyClass() = default;

    // Delete copy constructor
    MyClass(const MyClass& other) = delete;

    // Delete copy assignment operator
    MyClass& operator=(const MyClass& other) = delete;

    // Normal member function
    void doSomething();

    // Deleted member function
    void doSomethingElse() = delete;
};

在上面的示例中,使用 = delete; 将拷贝构造函数和拷贝赋值运算符声明为删除的,这意味着这两个函数不能被调用或者用于对象。

总结:

  • default 关键字用于告诉编译器生成默认的特殊成员函数。
  • delete 关键字用于禁用特定的成员函数或函数重载。

这些关键字提供了更精确的控制能力,可以使代码更清晰和安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值