gpt4 book ai didi

c++ - 如何构造具有 unique_ptr 成员的对象?

转载 作者:太空狗 更新时间:2023-10-29 21:41:10 25 4
gpt4 key购买 nike

我有一个基类:

class Base {
public:
Base(??? new_p) : p(new_p) {}
std::unique_ptr<MyType> p;
}

派生类:

class Derived : public Base {
Derived(??? new_p) : Base(new_p) {}
}

如果我想构造Derived,我应该用什么类型替换问号?其他改了也没问题。我想确保可以在不复制 p 指向的 MyType 的情况下构造 Derived

最佳答案

取决于您想要支持什么 - 下面的构造函数中的一个或两个都有意义,来自 MyType*std::unique_ptr<MyType>&& , 这需要一个可移动的 unique_ptr由来电者提供。只需使用 std::unique_ptr<MyType>也有效,因为 std::unique_ptr有一个来自其他可移动实例的构造函数......只是一个品味问题,你是否想强调调用者传入的必然 transient 性质unique_ptr在您自己的代码中。

class Base
{
public:
Base(MyType* new_p) : p(new_p) { }
Base(std::unique_ptr<MyType>&& new_p) : p(std::move(new_p)) { }

std::unique_ptr<MyType> p;
};

class Derived : public Base
{
public:
Derived(MyType* new_p) : Base(new_p) { }
Derived(std::unique_ptr<MyType>&& new_p) : Base(std::move(new_p)) { }
};

看到它正在运行here

关于c++ - 如何构造具有 unique_ptr 成员的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691683/

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