我最初发布这个只是关于析构函数的问题,但现在我添加了默认构造函数的考虑。 这是原来的问题: 如果我想让我的类是一个虚拟的析构函数,但是与编译器生成的相同,我可以使用=default : class Widget { public: virtual ~Widget() = default; }; 但是,似乎我可以通过使用空白定义来减lessinput来获得相同的效果: class Widget { public: virtual ~Widget() {} }; 这两个定义的行为有什么不同? 基于针对这个问题发布的回复,默认构造函数的情况看起来类似。 鉴于析构函数在“ =default ”和“ {} ”之间的含义几乎没有区别,这些选项对于默认构造函数在意义上几乎没有区别? 也就是说,假设我想创build一个types的对象将被创build和销毁,我为什么要说 Widget() = default; 代替 Widget() {} ? 我很抱歉,如果扩大这个问题后,其原来的发布是违反了一些SO规则。 为默认的构造函数发布几乎相同的问题让我觉得不那么理想。