【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

你可能感兴趣的:(c++,c++,开发语言,c++20)