当前位置:首页 > 编程笔记 > 正文
已解决

【C++11】default、delete与Noncopyable

来自网友在路上 164864提问 提问时间:2023-11-23 23:48:01阅读次数: 64

最佳答案 问答题库648位专家为你答疑解惑

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

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【C++11】default、delete与Noncopyable":http://eshow365.cn/6-42086-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!