gpt4 book ai didi

C++ - 我什么时候应该在类中使用指针成员

转载 作者:IT老高 更新时间:2023-10-28 21:49:20 26 4
gpt4 key购买 nike

在学习 C++(和 Direct3D,但那是前段时间)时,我一直感到困惑的一件事是何时应该在类中使用指针成员。例如,我可以使用非指针声明:

private:
SomeClass instance_;

或者我可以使用指针声明

private:
Someclass * instance_

然后在构造函数中对其使用 new() 。

我知道,如果 SomeClass 可以从另一个类、COM 对象或 ABC 派生,那么它应该是一个指针。还有其他我应该注意的准则吗?

最佳答案

指针有以下优点:

a) 您可以进行延迟初始化,这意味着仅在第一次真正使用之前初始化/创建对象。

b) 设计:如果您对外部类类型的成员使用指针,则可以在类上方放置一个前向声明,因此不需要在您的 header 中包含该类型的 header - 而不是您在您的 .cpp 中包含第三方头文件 - 这样做的好处是可以减少编译时间并通过包含太多其他头文件来防止副作用。

class ExtCamera;  // forward declaration to external class type in "ExtCamera.h"

class MyCamera {
public:
MyCamera() : m_pCamera(0) { }

void init(const ExtCamera &cam);

private:
ExtCamera *m_pCamera; // do not use it in inline code inside header!
};

c) 可以随时删除指针 - 因此您可以更好地控制生存时间并可以重新创建对象 - 例如在失败的情况下。

关于C++ - 我什么时候应该在类中使用指针成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1175646/

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