编译器生成的方法

时间:2014-06-06 12:53:24

标签: c++

在声明类/结构/联合时,编译器将生成默认方法(rule of three)。当= default使用这些方法时也会发生这种情况。

默认方法的外观如何?

3 个答案:

答案 0 :(得分:0)

例如,让我们考虑默认的构造函数。根据C ++标准

  

隐式声明的默认构造函数是内联公共成员   同类的。

  

隐式定义的默认构造函数执行set of   由用户编写的类的初始化   没有ctor-initializer的那个类的默认构造函数(12.6.2)   和一个空的复合语句。

所以它看起来像

struct A
{
   A() {}
};

除了未明确声明和定义。

关于复制构造函数,您可以在我的个人论坛上阅读

http://cpp.forum24.ru/?1-1-0-00000021-000-0-0-1388485669

虽然它是用俄语写的,但你可以使用谷歌服务翻译来翻译它。

答案 1 :(得分:0)

对于这些方法中的每一种,编译器都定义了默认的内联方法,这些方法调用对象的每个属性的默认方法。 (因此指针不会被初始化为任何内置类型)。

答案 2 :(得分:0)

这些方法将做到初始化类所需的最小值。

默认construtor - 对简单成员不做任何事情,但调用更复杂成员(class / struct)的构造函数以及调用其超类的ctor。

复制构造函数将执行浅拷贝(memcpy)。