这行代码在 C++ class 中意味着什么?
What does this line of code means in C++ class?
我在审查存储库时偶然发现了这段代码,但在 Internet 上找不到任何参考资料。
它到底是做什么的?我假设它指定了要使用的默认构造函数和析构函数。但是,如果默认构造函数和析构函数在没有自定义构造函数和析构函数的情况下隐式使用,为什么还要这么写呢?
foo::foo() = default
foo::~foo() = default
foo.h
class foo
{
public:
foo();
~foo();
void program();
};
foo.cpp
foo::foo() = default;
foo::~foo() = default;
它只是告诉编译器使用其默认生成的构造函数和析构函数变体。
请注意,您不需要将构造函数和析构函数放在源文件中,头文件中也可以包含这些“默认值”:
class foo
{
public:
// Use compiler-generated default implementation
foo() = default;
// Use compiler-generated default implementation
~foo() = default;
void program();
};
参见 this default constructor reference, as well as destructor 3 in this destructor reference 中的构造函数 3 和 5。
https://en.cppreference.com/w/cpp/language/default_constructor
class_name() = default ; (4) (since C++11)
- 默认默认构造函数:即使存在其他构造函数,编译器也会定义隐式默认构造函数。
class_name :: class_name ( ) = default ; (5) (since C++11)
- class 定义之外的默认默认构造函数(class 必须包含声明 (1))。这样的构造函数被视为用户提供的(见下文和值初始化)。
我在审查存储库时偶然发现了这段代码,但在 Internet 上找不到任何参考资料。
它到底是做什么的?我假设它指定了要使用的默认构造函数和析构函数。但是,如果默认构造函数和析构函数在没有自定义构造函数和析构函数的情况下隐式使用,为什么还要这么写呢?
foo::foo() = default
foo::~foo() = default
foo.h
class foo
{
public:
foo();
~foo();
void program();
};
foo.cpp
foo::foo() = default;
foo::~foo() = default;
它只是告诉编译器使用其默认生成的构造函数和析构函数变体。
请注意,您不需要将构造函数和析构函数放在源文件中,头文件中也可以包含这些“默认值”:
class foo
{
public:
// Use compiler-generated default implementation
foo() = default;
// Use compiler-generated default implementation
~foo() = default;
void program();
};
参见 this default constructor reference, as well as destructor 3 in this destructor reference 中的构造函数 3 和 5。
https://en.cppreference.com/w/cpp/language/default_constructor
class_name() = default ; (4) (since C++11)
- 默认默认构造函数:即使存在其他构造函数,编译器也会定义隐式默认构造函数。
class_name :: class_name ( ) = default ; (5) (since C++11)
- class 定义之外的默认默认构造函数(class 必须包含声明 (1))。这样的构造函数被视为用户提供的(见下文和值初始化)。