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