gpt4 book ai didi

c++ - 派生类中的复制构造函数

转载 作者:行者123 更新时间:2023-11-30 03:00:51 26 4
gpt4 key购买 nike

我有一个基类,从它派生的类很少。我没有在基类中写任何复制构造函数,它使用默认的。

所以如果我写这段代码:

base* b;
b = new base(*this)

它工作正常,但如果我这样写:

base* b;
b = new derive(*this)

它给我一个派生类中没有匹配函数的错误。

我不能将基类的 this 指针传递给它的派生类复制构造函数来初始化它吗?

最佳答案

Derived 复制构造函数将 const Derived & 作为参数。您不能使用 const Base & 作为参数。

你正在尝试做:

Derived *d = new Derived();
Base *b = new Base(*d); //ok, since Derived is subclass of Base

Base *b = new Based();
Derived *d = new Derived(*b); //error, since Base in not subclass of Derived

为了从Base构造Derived,你需要自己提供这样的构造函数:

Derived(const Base &base) {...}

关于c++ - 派生类中的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647172/

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