【发布时间】:2020-10-31 01:10:54
【问题描述】:
我在查看 repo 时偶然发现了这段代码,但在互联网上找不到任何参考。
它到底是做什么的?我假设它指定了要使用的默认构造函数和析构函数。但是如果没有自定义的构造函数和析构函数被隐式使用,为什么还要写这个呢?
foo::foo() = default
foo::~foo() = default
foo.h
class foo
{
public:
foo();
~foo();
void program();
};
foo.cpp
foo::foo() = default;
foo::~foo() = default;
【问题讨论】:
-
这告诉编译器(明确地)将其生成的默认实现用于默认构造函数
foo()和析构函数~foo()。我从未在类声明之外见过= default,但g++似乎对此没有任何抱怨:Live Demo on coliru -
它告诉在现代 c++ 中使用编译器生成的默认版本
foo::foo()和foo::~foo() -
这不是它有用的例子,而是语法的例子。
标签: c++ class oop constructor destructor