一个类的构造函数后跟 = default 和 = delete 是什么用法(含 C++ 代码示例)

C++11引入了=default和=delete关键字,用于控制类的特殊函数(如构造函数、赋值运算符等)的行为。=default允许显式要求编译器提供默认实现,提高代码可读性和性能;=delete则阻止这些函数的使用,增强类型安全。这两个关键字使程序员能更精确地指定类的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 C++11 中,= default= delete 是两个特殊的函数声明符号,它们可以用于限定类的特殊函数的生成行为。

  1. = default

先说 = default 关键字,它用于显式声明一些类的成员函数(默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符、析构函数)使用编译器提供的默认实现。这样可以提高代码的可读性和可靠性,同时在编译器的优化下可为代码带来性能上的提升。当使用 = default 时,编译器将会自动生成合适的默认构造函数,而无需显式地定义它们。以下是一个示例:

class A
{
public:
    A() = default; // 显式声明默认构造函数
};

上述代码中,使用 = default 显式声明了A类的默认构造函数,此时编译器会自动生成一个默认的构造函数实现。

  1. = delete

= delete 关键字用于删除类的特殊函数,起到防止在类中被显式调用的作用,也可以用来定义特定情况下的语法错误。以下是一个示例:

class B
{
public:
    B(const B&) = delete; // 删除复制构造函数
    void operator=(const B&) = delete; // 删除赋值运算符
};

上述代码中,使用 = delete 删除了类B的复制构造函数和赋值运算符的定义。这意味着该类的对象不能被进行对象之间的复制,并且对象重载赋值运算符的情况下将报错。

总之,= default= delete 是 C++11 中的两个特殊的函数声明符号,可用于显式声明生成函数和解除其使用,以提高代码的可读性、性能和安全性。它们的使用需要根据实际情况进行考虑,谨慎使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值