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

C++ 我可以只包含一个类的特定成员方法吗?,c++,class,include,C++,Class,Include,我有一个cpp文件,它只使用大型类的一个方法。为此,我通常包括大型类声明头文件。我可以只包含一个类的特定成员方法吗?不可以通过\include预处理器命令只包含一个类中的一个方法。对于最常见的情况,编译器需要知道类和所有方法,才能知道您使用的方法是否存在 现在在处理模板类时,编译器将只编译所使用的代码/函数,但您仍然必须包含整个类,以便编译器可以检查该方法是否存在。例如: template<class A> class A { public: void foo();

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

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

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

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

int main {
  A a;
  a.foo();
}
模板
甲级{
公众:
void foo();
空心钢筋();
}
int main{
A A;
a、 foo();
}

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

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

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

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

int main {
  A a;
  a.foo();
}
模板
甲级{
公众:
void foo();
空心钢筋();
}
int main{
A A;
a、 foo();
}
在前面的例子中,只有foo被编译和优化,而不是bar。

简短回答:否

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

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

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

简短回答:没有

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

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


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

-optimization@H2CO3这是什么意思?为什么您认为只需要包含类的一个方法?@pippin1289用于编译performancemeta-optimization@H2CO3这意味着什么?为什么您认为只需要包含类的一个方法?@pippin1289以提高编译性能