编译器生成的方法

Compiler generated methods

本文关键字:方法 编译器      更新时间:2023-10-16

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

默认方法到底是什么样子的?

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

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

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

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

所以看起来像

struct A
{
   A() {}
};

只是没有明确声明和定义。

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

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

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

这些方法将完成初始化类所需的最少操作。

默认构造函数-不处理简单成员,而是调用更复杂成员(类/结构(的构造函数以及其超类的ctor。

Copy构造函数将执行浅层复制(memcpy(。