c++ - 成员类/对象变量使用指针更好吗?

标签 c++

当我试图保持一个关于#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/

相关文章:

c++ - 将 Boost 适配器与 std::bind 表达式一起使用

c++ - 为什么 C++ 在乘以大于 590x590 的矩阵时会出现段错误?

c++ - 使用元数据类型中继信号/槽

c++ - 绘制三角形,无法设置法线

c++ - 类中已删除的析构函数显示为虚拟/直接基类或一种非静态数据成员

c++ - 如何在编译期间避免标准包含文件

c++ - 非方阵的 cuFFT 2D 卷积结果错误

c++ - Boost.Spirit 可以在理论上/实践上用于解析 C++(0x)(或任何其他语言)吗?

非类 typedef 的 C++ 前向声明

c++ - 按值比较可变参数