gpt4 book ai didi

c++ - 复制构造函数定义和声明区别?

转载 作者:行者123 更新时间:2023-11-30 04:20:56 25 4
gpt4 key购买 nike

我有一个类 Base 和 Class derived 。

  1. 如果我在我的类中声明了一个复制构造函数,编译器会在编译时定义复制构造函数吗?
  2. 如果派生类复制构造函数被调用会发生什么?它取决于基类复制构造函数吗?

(我需要知道在标准编译过程中基类和派生类在拷贝构造函数方面的关系。编译器定义拷贝构造函数是什么以及如何定义)

最佳答案

If i declare a copy constructor in my class, will the compiler define the copy constructor while compiling?

没有。不会的。

如果你只是声明复制构造函数而不定义它,你将以链接错误告终。通过为复制构造函数提供显式声明,您告诉编译器隐式生成的构造函数不足以满足您的需求,并 promise 您将提供自己的版本。但是,当您不提供定义时,您就违背了 promise 。

What will happen if the Derived class copy constructor is called ? Is it depend on the Base class copy constructor?

基类有无拷贝构造函数不影响派生类的拷贝构造函数。规则很简单:
如果您不提供显式声明,编译器会为您的类生成一个复制构造函数。请注意,仅当您的代码使用复制构造函数时,编译器才会这样做。如果编译器检测到您的代码从不使用复制构造函数,那么它不会生成复制构造函数,因为它是一种不必要的开销,并且违反了 C++ 的基本规则,“您只为使用的东西付费”

关于c++ - 复制构造函数定义和声明区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com