【C++11】default、delete与Noncopyable

C++11 oop中的default、delete与Noncopyable

default

在C++11标准中,可以使用default关键字来显式地声明默认的构造函数和析构函数。

使用default关键字可以用来显式声明默认的构造函数和析构函数。这样做可以让编译器自动生成默认实现

–>->->关于构造函数<-<-<–

class A {
public:
    // 显式声明默认构造函数
    A() = default;
    // 显式声明默认析构函数
    ~A() = default;
};

int main() {
    A obj;    // 调用默认构造函数
    return 0;
}

注意:
1. Defaulted 函数特性仅适用于类的特殊成员函数,且该特殊成员函数没有默认参数。
2. Defaulted 函数既可以在类体里(inline)定义,也可以在类体外定义。

delete

使用delete关键字的函数在其他地方无法使用,即这个函数不存在,禁止定义。

class A {
public:
    // 禁止拷贝构造函数 
    A (const A &) = delete; 
    //“delete”特性可以作用于非特殊成员函数
    void f() = delete; 
};

int main() {
    A obj;    // 调用默认构造函数
    return 0;
}

Noncopyable不可拷贝对象

封装一个不可拷贝对象Noncopyable,当类需要不可拷贝时可继承自Noncopyable

#ifndef __RADIXUN_NONCOPYABLE_H__
#define __RADIXUN_NONCOPYABLE_H__

namespace radixun{


/**
 * @brief 对象无法拷贝,赋值
 */
class Noncopyable{
public:
    
    /**
     * @brief 默认析构函数
     */
    Noncopyable() = default;

    /**
     * @brief 默认析构函数
     */
    ~Noncopyable() = default;

    /**
     * @brief 拷贝构造函数(禁用)
     */
    Noncopyable(const Noncopyable&) = delete;

    /**
     * @brief 赋值函数(禁用)
     */ 
    Noncopyable& operator=(const Noncopyable&) = delete;
};

}

#endif

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值