将指针用于成员类/对象变量是否更好?

cod*_*der 1 c++

当我试图保持一个关于#includes 的干净头文件时,我发现通过让我的所有成员指向需要包含其他头文件的类/对象,我可以做得更好,因为这样我可以使用前向声明而不是#includes。

但我开始怀疑这是否是一个好的经验法则。

因此,例如采用以下类 - 选项 1:

class QAudioDeviceInfo;
class QAudioInput;
class QIODevice;

class QAudioRx
{
public:
    QAudioRx();
private:  
    QAudioDeviceInfo *mp_audioDeviceInfo;
    QAudioInput *mp_audioInput;
    QIODevice *mp_inputDevice;
};
Run Code Online (Sandbox Code Playgroud)

但是,这可以像这样重写 - 选项 2:

#include "QAudioDeviceInfo.h"
#include "QAudioInput.h"
#include "QIODevice.h"

class QAudioRx
{
public:
    QAudioRx();
private:  
    QAudioDeviceInfo m_audioDeviceInfo;
    QAudioInput m_audioInput;
    QIODevice m_inputDevice;
};
Run Code Online (Sandbox Code Playgroud)

选项 1,通常是我的偏好,因为它包含一个更好的清洁标题。但是,选项 2 不需要动态分配/取消分配资源。

也许这可以被视为一个基于主观/意见的问题(我知道意见警察会对此无所适从),所以让我们避免“我喜欢”和“我喜欢”并坚持事实/关键点。

所以我的问题是,一般来说,最佳实践是什么(如果有的话),为什么?或者如果没有一种最佳实践(通常是这种情况),什么时候使用每一种最佳实践?

编辑

抱歉,这实际上是用于私有变量 - 而不是公共变量。

Hum*_*awi 5

如果需要指针,请使用指针。指针不是为了避免包含。包括不是邪恶的。当您需要使用它们时,请使用它们。简单的规则等于快乐的编程!

在你的情况下使用指针会带来很多不必要的开销。您可能必须动态分配您的对象,这对您的情况来说不是一个好的选择。您还必须手动处理内存管理。简单地说,没有理由在此处使用指针,除非您的情况要求(例如,您希望对象比指针本身活得更久(例如,非所有权模式)。