=default =delete

文章介绍了C++中`=default`和`=delete`的使用,前者用于声明并使用默认的特殊成员函数实现,后者则用来禁用特定的构造和赋值操作,以增强代码的安全性和清晰度。
摘要由CSDN通过智能技术生成

在C++中,=default=delete是两个特殊的成员函数声明符号,用于显式地声明成员函数的行为。下面我将分别举例详细说明它们的作用:

  1. =default: 当你想要告诉编译器使用默认的特殊成员函数实现时,你可以使用=default。这个特性通常用于默认构造函数、拷贝构造函数、拷贝赋值运算符和析构函数。它告诉编译器生成默认的实现,而不需要程序员手动编写。

    class MyClass 
    { 
        public: 
            MyClass() = default; // 默认构造函数 
            MyClass(const MyClass&) = default; // 拷贝构造函数 
            MyClass& operator=(const MyClass&) = default; // 拷贝赋值运算符 
            ~MyClass() = default; // 析构函数 
    }; 

  2. 在上面的例子中,=default告诉编译器生成默认的构造函数、拷贝构造函数、拷贝赋值运算符和析构函数的实现。这在某些情况下特别有用,比如当类的成员都可以使用默认初始化或拷贝时,你不需要手动编写这些函数。

  3. =delete: 当你想要阻止某个特殊成员函数的调用时,你可以使用=delete。这个特性通常用于阻止默认构造函数、拷贝构造函数、拷贝赋值运算符和析构函数的调用。

    class NonCopyable 
    { 
        public: 
            NonCopyable() = default; // 默认构造函数 
            NonCopyable(const NonCopyable&) = delete; // 禁用拷贝构造函数 
            NonCopyable& operator=(const NonCopyable&) = delete; // 禁用拷贝赋值运算符 
            ~NonCopyable() = default; // 默认析构函数
    }; 
    
    

  4. 在上面的例子中,我们定义了一个NonCopyable类,通过=delete禁用了拷贝构造函数和拷贝赋值运算符,这样可以确保该类对象不能被拷贝。如果尝试使用被删除的函数,编译器会报错,从而防止了意外的行为发生。

总而言之,=default=delete这两个特殊成员函数声明符号可以让程序员更加灵活地控制类的行为,使代码更加清晰和安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值