当我试图保持一个关于#includes 的干净头文件时,我发现我可以通过让我的所有成员指向需要包含其他头文件的类/对象来做得更好,因为这样我可以使用前向声明而不是#includes。
但我开始怀疑这是否是一个好的经验法则。
例如,采取以下类(class) - 选项 1:
class QAudioDeviceInfo;
class QAudioInput;
class QIODevice;
class QAudioRx
{
public:
QAudioRx();
private:
QAudioDeviceInfo *mp_audioDeviceInfo;
QAudioInput *mp_audioInput;
QIODevice *mp_inputDevice;
};
然而,这可以像这样重写 - 选项 2:
#include "QAudioDeviceInfo.h"
#include "QAudioInput.h"
#include "QIODevice.h"
class QAudioRx
{
public:
QAudioRx();
private:
QAudioDeviceInfo m_audioDeviceInfo;
QAudioInput m_audioInput;
QIODevice m_inputDevice;
};
选项 1 通常是我的首选,因为它包含一个更好、更清晰的 header 。然而,选项 2 不需要动态分配/取消分配资源。
也许这可以被视为一个主观/基于意见的问题(而且我知道意见警察会处理这个问题),所以让我们避免“我喜欢”和“我更喜欢”并坚持事实/关键-点数。
所以我的问题是,总的来说,最佳实践是什么(如果有的话),为什么?或者,如果没有一种最佳实践(通常情况下是这样),那么什么时候使用每一种最佳实践呢?
编辑
抱歉,这实际上是针对私有(private)变量 - 而不是公共(public)变量。
最佳答案
如果您需要指针,请使用指针。指针不是为了避免包含。包括不是邪恶的。当您需要使用它们时,请使用它们。简单的规则等于快乐的编程!
在你的案例中使用指针会带来很多不必要的开销。您可能必须动态分配您的对象,这对您的情况来说不是一个好的选择。您还必须手动处理内存管理。简而言之,没有理由在这里使用指针,除非您的情况需要(例如,您希望对象比指针本身更有效(例如非所有权模式)。
关于c++ - 成员类/对象变量使用指针更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37268899/