我可以只包含一个类的特定成员方法吗?

时间:2013-10-13 05:18:41

标签: c++ class include

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

2 个答案:

答案 0 :(得分:1)

简短回答:不。

当您包含标题时,您将包含整个标题(减去可能通过预处理程序指令删除的任何内容)。

此外,如果您所包含的标题声明为“大类”,则很可能该类应该重构。

最后,最终并不重要,因为编译器会为您优化一些东西。在你描述它们之前不要试图优化它们(在这种情况下,即使你能做到这一点,它也没有任何好处)。

答案 1 :(得分:0)

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

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

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

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

在前一种情况下,只编译和优化foo,而不是bar。