C++:避免编译器依赖与避免指针过度使用

C++ : avoiding compiler dependencies vs. avoiding pointer overuse

本文关键字:指针 依赖 编译器 C++      更新时间:2023-10-16

我知道在不需要指针的地方过度使用指针被认为是老式/过时的风格。然而,我发现这个理想与避免编译器依赖性的另一个考虑相冲突。

具体来说,如果成员变量是指针,我可以在头文件中使用正向声明,并避免#include语句。但这会导致我将自己类的成员变量作为指针,即使没有很好的理由这样做

顺便说一句,我发现使用Qt框架(我很喜欢)可以让我用这种java风格的堆编程风格来编程,因为这就是接口的设置方式。

我如何权衡这两个相互竞争的因素?

这取决于情况。减少依赖性绝对是一件好事,但它必须与所有其他问题进行权衡。例如,使用编译防火墙习惯用法可以移动头文件中的依赖项,以一个为代价分配。

至于QT的作用:它是一个GUI框架不考虑QT)意味着大量的多态性类具有标识,不能复制。在这种情况下通常必须使用动态分配指针。避免指针的规则主要涉及对象具有值语义。

(顺便说一句,没有什么"老式"或关于使用过多指针的"过时"。这是规则自从我25年前开始使用C++以来。)

Qt需要它,因为它是一个可以动态加载的库。用户可以编译和链接,而不必担心实现细节。您可以在运行时使用许多版本的Qt,而无需重新编译。这是非常强大和灵活的。如果在类内部使用私有对象实例,这是不可能的。