1

我有一个 cpp 文件,它只使用大类的一种方法。为此,我通常包含大型类声明头文件。我可以只包含一个类的特定成员方法吗?

4

2 回答 2

1

简短的回答:没有。

包含标头时,您包含整个标头(减去可能通过预处理器指令剥离的任何内容)。

此外,如果您包含的标头声明了一个“大型类”,则很可能应该重构该类。

最后,这并不重要,因为编译器会为您优化。在你分析它们之前不要尝试优化它们(在这种情况下,即使你可以这样做,它也不会有任何好处)。

于 2013-10-13T05:24:04.323 回答
0

#include不,您不能通过预处理器命令仅包含类中的一种方法。对于最常见的情况,编译器需要知道类和所有方法才能知道您正在使用的方法是否存在。

现在在处理模板类时,编译器只会编译使用的代码/函数,但您仍然必须包含整个类,以便编译器可以检查方法是否存在。例如:

template<class A>
class A {
  public:
    void foo();
    void bar();
}

int main {
  A a;
  a.foo();
}

在前面的例子中,只有 foo 被编译和优化,而不是 bar。

于 2013-10-13T05:23:15.500 回答