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