复制构造函数定义并声明差异
Copy constructor define and declare difference?
我有一个基类和派生类。
- 如果我在类中声明了一个复制构造函数,编译器会在编译时定义复制构造函数吗
- 如果调用派生类复制构造函数,会发生什么?它依赖于基类复制构造函数吗
(在标准编译过程中,我需要知道基类和派生的复制构造函数之间的关系。编译器定义复制构造函数是什么以及如何定义的)
如果我在类中声明了一个复制构造函数,编译器会在编译时定义复制构造函数吗
没有。不会的。
如果你只是声明了复制构造函数而没有定义它,那么你最终会出现一个链接错误。通过为副本构造函数提供显式声明,您可以告诉编译器隐式生成的声明不足以满足您的需求,并承诺您将提供自己的版本。但如果你不提供定义,你就违背了承诺。
如果调用派生类复制构造函数会发生什么?它依赖于基类复制构造函数吗
基类中是否存在复制构造函数不会影响派生类中的复制构造函数。规则很简单:
若并没有提供显式声明,编译器会为类生成一个复制构造函数。请注意,只有当您的代码使用复制构造函数时,编译器才会这样做。如果编译器检测到您的代码从未使用过复制构造函数,那么它将不会生成复制构造函数,因为这是一个不需要的开销,并违反了C++的基本规则,"您只为使用的东西付费"
相关文章:
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- Arduino C++在构造函数中用参数声明对象数组
- 声明没有默认构造函数的字段
- 构造函数/函数声明参数列表中的统一初始化
- 让某个类的 '=' 运算符在声明时运行构造函数
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 强制使用默认构造函数对成员进行未初始化的声明
- 关于隐式声明的复制构造函数的引用在逻辑上不清楚
- 已弃用隐式声明的复制构造函数
- 无法重新声明构造函数.为什么?
- 在类的私有部分中声明一个数组,并在构造函数中分配数组值
- 用相同的参数声明两个构造函数的最偶像化的方法是什么?
- 将派生类的构造函数声明为父类的友元
- C++ 声明继承的构造函数?
- 为什么我的对象声明不调用默认构造函数?
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 在C++中,当没有为类声明构造函数时,如果我用参数构造一个对象会发生什么
- 尝试声明构造函数时,输入末尾的预期"{"
- 是否可以在声明构造函数的头文件中提供构造函数的定义
- 这就是声明构造函数private和声明=delete之间的区别