我知道在不必要的地方过度使用指针被认为是过时/过时的风格。但是,我发现这种理想与避免编译器依赖项的另一种考虑相冲突。
具体来说,如果成员变量是指针,我可以在头文件中使用前向声明并避免使用#include 语句。但这导致我将自己类的成员变量作为指针,即使没有真正的理由这样做。
顺便说一句,我发现使用 Qt 框架(我很喜欢)会导致我以这种 java 式的一切堆上编程风格进行编程,因为这是设置界面的方式。
我如何权衡这两个相互竞争的考虑因素?
我知道在不必要的地方过度使用指针被认为是过时/过时的风格。但是,我发现这种理想与避免编译器依赖项的另一种考虑相冲突。
具体来说,如果成员变量是指针,我可以在头文件中使用前向声明并避免使用#include 语句。但这导致我将自己类的成员变量作为指针,即使没有真正的理由这样做。
顺便说一句,我发现使用 Qt 框架(我很喜欢)会导致我以这种 java 式的一切堆上编程风格进行编程,因为这是设置界面的方式。
我如何权衡这两个相互竞争的考虑因素?
Qt 需要它,因为它是一个可以动态加载的库。用户可以编译和链接,而不必担心实现细节。您可以在运行时使用许多版本的 Qt,而无需重新编译。这是非常强大和灵活的。如果在类中使用私有对象实例,这是不可能的。
这取决于。减少依赖性本身绝对是一件好事,但必须权衡所有其他问题。例如,使用编译防火墙惯用语可以将依赖项移出头文件,代价是一次分配。
至于 QT 的作用:它是一个 GUI 框架,它(通常——我没有看过 QT)意味着很多多态性,并且大多数类都有标识,并且不能被复制。在这种情况下,您通常必须使用动态分配并使用指针。避免指针的规则主要涉及具有值语义的对象。
(顺便说一句,使用太多指针并没有什么“过时的”或“过时的”。自从我 25 年前开始使用 C++ 以来,这一直是规则。)