C ++什么时候值得进行声明?

时间:2014-05-29 13:59:26

标签: c++ declaration

我是c ++世界的新手,并且了解到进行前向声明是一种很好的做法。但这总是好的吗?

我正在寻找指导什么时候做出前瞻性宣言是好的做法,什么时候不好,但我真的找不到。什么时候应该使用或者不使用,或者完全取决于开发人员?

2 个答案:

答案 0 :(得分:1)

在某些情况下,您实际上会开始使用PIMPL习惯用法(包括前向声明)的其他不必要的应用程序使您的代码库复杂化,以减少编译时间,而实际上您首先没有任何编译速度问题,至少使用该特定类或头文件。

这可以被认为是过早优化和滥用前向声明的情况。

答案 1 :(得分:1)

正如juanchopanza所提到的,一般来说,当你不需要一个完整的类定义时,你可以使用前向声明 - 基本上当你不需要知道 size 成员< / em>有问题的课程。它允许您删除编译时依赖项,这可以简化和加快编译。

例如,如果您只使用指向某个类的指针,那么您不需要再了解它。但是,如果您调用该类的方法,或者存储该类的实际实例,那么您需要知道该类的完整详细信息。

class A;  // forward declaration

class B {
    ...
    void func1(A*);
}

class C {
    ...
    A m_inst;
}

在上面,C将无法编译,因为它需要知道声明点A的大小。但是,func1很好,因为它只使用指向A的指针,所以不需要知道大小或实现。

Herb Sutter提供了一些信息以及解释,但是如果你是初学者,请注意其中一些信息有点先进。