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

Can I just include a particular member method of a class?

本文关键字:成员方法 包含类 我可以      更新时间:2023-10-16

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

简短回答:不。

包含标头

时,将包含整个标头(减去可能通过预处理器指令删除的任何内容(。

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

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

否,

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

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

template<class A>
class A {
  public:
    void foo();
    void bar();
}
int main {
  A a;
  a.foo();
}

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