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