我有一个 cpp 文件,它只使用大类的一种方法。为此,我通常包含大型类声明头文件。我可以只包含一个类的特定成员方法吗?
问问题
43 次
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 回答