gpt4 book ai didi

c++ - 什么时候使用引用成员?

转载 作者:太空狗 更新时间:2023-10-29 20:26:31 30 4
gpt4 key购买 nike

我刚刚意识到我什至无法弄清楚 C++ 中引用成员的一个用例。比如说,如果我定义以下类:

class Book {
public:
Book(const Author& author) : author(author) {}
private:
const Author &author;
}

我怎么能用它呢?如果我将 newed Author 传递给它:

Book book(*(new Author()));

它不会泄漏内存吗? Author 什么时候发布?

让我再试一次。如何将局部变量传递给它:

Book macBook() {
Author author();
return Book(author);
}

返回的 Book 没有无效(已发布)引用吗?

想不到第三种使用方式。那么为什么引用成员存在呢?我应该什么时候使用它?

编辑:我知道有share_ptr。但是我应该总是更喜欢 share_ptr 来引用吗?

最佳答案

您必须确保作者的生命周期至少与本书​​一样长(或者至少要非常小心,不要在作者生命周期之外使用本书的引用文献)。确保这一点的一种简单方法是将它们放在相同的范围内,首先创建作者:

Author author;
Book book(author);

正如您所说,问题中的两个示例都不好:第一个泄漏内存(或者,如果您添加 * 使其编译),第二个让您悬空引用。但是还有很多其他方法可以管理对象的生命周期。

关于c++ - 什么时候使用引用成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19587780/

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