我通常使用 Java 编写代码,但我已经开始学习 C++,因为我正在尝试参与一些竞争性编程。现在让我感到困惑的是,在 java 中,您可以在类中声明一个方法,将其公开,仅此而已。
例如,在 Java 中:
public class Main{
public int javamethod(int myNum){
return myNum;
}
}
而在 C++ 中,您将函数声明和定义拆分到不同的文件中(如 cprogram.hpp 和 cprogram.cpp)。这不是多余和重复吗?这到底有什么意义?
C++ 示例(头文件)
int cppfunc(int myNum);
(cpp文件)
int cppfunc(int myNum){
return myNum;
}
最佳答案
有3个原因:
函数必须先声明,然后才能调用。因此,如果您有
fun1()
调用fun2()
,反之亦然,则您无法在声明时为每个函数编写实现。隐藏依赖项。如果实现依赖于某些包含,并且您不希望要求该函数的每个用户都包含它 - 那么您必须拆分声明和实现。
C++ 遵循蹩脚的古老构建方案。 header 被复制粘贴到其他 header 中,并且每次都会重建。随着每个 header 一次又一次地重新编译,编译时间将上升到荒谬的数字。
问题 2 和 3 在 C++20 中得到解决。模块 TS 解决了这两个问题,使用它们,您将能够编写函数,而无需拆分定义和实现,就像在 Java 中一样,没有任何问题。
注意:您不必拆分声明/定义。您只需使函数内联
,否则链接器可能会对您尖叫。
关于c++ - 为什么c++中函数的定义和声明要分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63697228/