gpt4 book ai didi

c++ - 从重写方法返回派生类,声明为返回基拷贝

转载 作者:行者123 更新时间:2023-11-28 00:15:10 24 4
gpt4 key购买 nike

这又是一个反复出现的问题。有人知道一个简单的方法吗?假设我有以下内容:

class Base
{
public:
...
Base property(const std::string& name)=0;
};
class Derived:public Base
{
public:
Derived();
Derived(const Derived&& val);
Base property(const std::string& name)
{
Derived z;
return z;
}
}

有一种方法可以让 Derived::property 返回(在内部)是 Derived 拷贝而不只是 Base 部分拷贝,并且调用 Derived 移动构造函数?

可能是个愚蠢的问题,但我确实找不到解决方案。为什么在返回时复制构造函数不复制专门的类?

谢谢!

最佳答案

你不能这样做。

从概念上讲,按值返回(忽略 RVO 和移动语义)意味着通过使用函数声明要返回的类型的复制构造函数来复制您返回的任何内容。如果您返回一个 Derived,将创建​​一个 Base 类型的拷贝,您将丢失该对象的 Derived 部分。这称为切片

如果你想返回一个 Derived 对象作为 Base,你需要使用指针。

关于c++ - 从重写方法返回派生类,声明为返回基拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775778/

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