gpt4 book ai didi

c++ - 你如何实例化智能指针类成员?

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

我最近一直在做一些非常狡猾的智能指针编程,因为我从来没有真正理解 move 构造函数、 move 赋值等,因为像 MSDN 这样的地方给出的例子对我来说真的很费解。所谓狡猾,我的意思是从字面上改变诸如 (lvalue + 0) 之类的事情来生成右值。

举个例子(我不擅长想出不深奥的场景):

class Person {
public:
Person(int age) {
age_ = age;
}

private:
int age_;
};

class Life {
public:
Life(int age) {
person_ = std::make_unique<Person>(age);
}
private:
std::unique_ptr<Person> person_;
};

年龄部分必须是右值,使它成为右值的正确方法是什么?我读过 move 构造函数,但它们似乎传递对象本身的右值引用?

编辑:此外,是否可以从类构造函数的成员初始化列表中初始化智能指针成员?

最佳答案

您可以简单地执行以下操作,创建一个 Person 指针并将其分配给 unique_ptr:

class Life {
public:
Life(int age) : person_(new Person(age)) {}
...

关于c++ - 你如何实例化智能指针类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306905/

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