显式默认构造函数的作用

What do explicitly-defaulted constructors do?

本文关键字:作用 构造函数 默认      更新时间:2023-10-16

考虑以下内容:

template <class T>
struct myclass
{
    using value_type = T;
    constexpr myclass() = default;
    constexpr myclass(const myclass& other) = default;
    constexpr myclass(const myclass&& other) = default;
    T value;
};
  • 这些函数等价于什么构造函数
  • myclass<int> x;是否在0处初始化整数
  • 对于myclass<std::vector<int>> x;,默认的move构造函数做什么?它会调用向量的move构造函数吗

它们不等价于任何函数体。三种情况之间存在微小但显著的差异:允许隐式生成的= default和最近的等效函数体。

以下链接更详细地解释:

  • 默认的默认构造函数和析构函数
  • 默认的移动构造函数

我找不到关于复制构造函数的好链接;然而,其他两个链接中提到的类似考虑将适用。


CCD_ 5不将CCD_ 6设置为CCD_。

默认的move构造函数(如果您将其设为非常量引用)移动每个可移动成员(尽管我认为有一种特殊情况,如果存在不可移动的基类,则会发生奇怪的事情…)

相关文章: