c++ 11 =delete

=delete 则是C++11引入的一种新特性,用于删除特定的函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符等。通过将函数声明为 =delete,可以显式地阻止该函数被调用,即使在类内部或者友元函数中也无法使用。

使用 =delete 的场景:

防止拷贝和赋值

cpp 复制代码
class NoCopy {
public:
    NoCopy() = default;
    NoCopy(const NoCopy&) = delete;             // 删除拷贝构造函数
    NoCopy& operator=(const NoCopy&) = delete;  // 删除赋值运算符
};

上面的例子中,通过删除拷贝构造函数和赋值运算符,可以防止该类的对象被复制或者赋值。

禁止特定参数类型的构造

cpp 复制代码
class NoInt {
public:
    NoInt() = default;
    NoInt(int) = delete;  // 删除接受 int 参数的构造函数
};

删除默认构造函数

cpp 复制代码
class NoDefault {
public:
    NoDefault() = delete;  // 删除默认构造函数
    NoDefault(int value) : data(value) {}
private:
    int data;
};

在某些类中,可能希望禁止默认构造函数的生成,而只允许带参数的构造函数。

相关推荐
Aczone2819 小时前
硬件(六)arm指令
开发语言·汇编·arm开发·嵌入式硬件·算法
YA33320 小时前
java设计模式二、工厂
java·开发语言·设计模式
逐雨~20 小时前
9.8C++作业
开发语言·c++
我爱挣钱我也要早睡!21 小时前
Java 复习笔记
java·开发语言·笔记
Yang-Never1 天前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
TomCode先生1 天前
c#动态树形表达式详解
开发语言·c#
高-老师1 天前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥1 天前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_437830941 天前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
鹿鹿学长1 天前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模