gpt4 book ai didi

c++ - 什么时候在堆和堆栈上有类成员?

转载 作者:行者123 更新时间:2023-11-28 04:13:11 25 4
gpt4 key购买 nike

我正在学习 C++ OO 设计。什么时候在堆和栈上声明类成员?

class RacingLiveEvent
{
public:
playerlist *pl;
}

对比

class RacingLiveEvent
{
public:
playerlist pl;
}

哪些设计/运行时/编译时注意事项将帮助我做出决定。有什么建议吗?

我看到堆,我可以在它自己的头文件中定义每个类。如果我使用静态对象,我需要所有依赖类都在一个文件中。

编辑:正如一些版主/stackoverflow AI 指出的那样,这个问题更多地是关于类设计而不是指针和引用之间的区别。我们已经在评论中从 Peter 和 Sombrero 那里得到了一些答案。

最佳答案

如果您需要将成员共享/传递给其他函数/类,请使用指针(更好的 shared_ptr),因为成员很大,因此复制成本很高。

指针允许成员在其作用域之外存活,并且当您的对象被销毁时,如果它在其他一些类或函数中使用,您希望允许该成员比其作用域存活更长的时间。

shared_ptr 的一个很好的用例是一些不同类型的对象共享同一个成员:

class A{
public:
A(std::shared_ptr<SomeType> member) :
member(member){}
std::shared_ptr<SomeType> member;
//
};

class B{
public:
B(std::shared_ptr<SomeType> member) :
member(member){}
std::shared_ptr<SomeType> member;
//
};

这里 A 和 B 可以共享同一个成员,如果他们共享,只有当所有使用 member 的人都离开他们的范围时,member 才会死亡。

请注意,如果您使用裸指针与他人共享您的成员并不是一个好主意。

除此之外使用堆栈。

关于c++ - 什么时候在堆和堆栈上有类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57236800/

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