编译器生成的方法
Compiler generated methods
在声明类/结构/联合时,编译器将生成默认方法(三条规则(。当= default
使用这些方法时,也会发生这种情况。
默认方法到底是什么样子的?
对于这些方法中的每一个,编译器都定义了默认的内联方法,这些方法调用对象每个属性的默认方法。(因此指针不会被初始化,任何内置类型也不会被初始化(。
例如,让我们考虑默认构造函数。根据C++标准
隐式声明的默认构造函数是内联公共成员在同类产品中。
和
隐式定义的默认构造函数执行由用户编写的类的初始化没有ctor初始值设定项的类的默认构造函数(12.6.2(和一个空的复合语句。
所以看起来像
struct A
{
A() {}
};
只是没有明确声明和定义。
关于复制构造函数,你可以在我的个人论坛上阅读
http://cpp.forum24.ru/?1-1-000000021-000-0-0-1388485669
虽然它是用俄语写的,但你可以翻译它,例如使用谷歌服务翻译。
这些方法将完成初始化类所需的最少操作。
默认构造函数-不处理简单成员,而是调用更复杂成员(类/结构(的构造函数以及其超类的ctor。
Copy构造函数将执行浅层复制(memcpy(。
相关文章:
- 重载方法的方式会在使用临时调用时生成编译器错误
- 处理编译器关于可能丢失数据的警告的最优雅方法是什么
- 编译器无法识别在类声明之外定义的方法
- 让编译器告诉什么确切的纯虚拟方法使结构抽象?
- 我可以让编译器忽略特定于操作系统的方法吗?
- Qt中的包装连接方法隐藏了编译器所需的信息
- G++ 编译器未为未定义的方法生成错误/警告
- 从 int 中剥离位时,编译器会警告一个转换,但不警告其他转换.有解决方法吗?
- 如果方法在类中定义,则阻止编译器删除方法
- 虚拟基类在内部如何工作?编译器如何解析对基方法的调用?
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- Visual Studio 2015资源视图和资源编译器使用不同的方法在项目目录中查找图标文件.如何修复
- C++编译器何时推断 no,除了方法?
- 对列表类中的泛型方法禁用编译器警告 2100,该泛型方法可能包含指针,也可能不包含指针
- 为什么编译器找不到超类的方法?
- 如何让编译器在C++中更喜欢常量方法重载?
- 无法通过可变参数函数将函数指针传递给父类中的方法--编译器错误?
- 没有匹配的方法编译器错误
- 调用继承方法-编译器错误
- 无法调用派生类的方法 - 编译器将对象实例标识为基类