如何解决为什么在c ++中拆分函数的定义和声明?
我通常使用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 ++遵循糟糕的古老构建方案。标头被复制粘贴到其他标头中,并且每次都将重建。每次重新编译每个标头时,编译时间将变得可笑。
问题2和3在C ++ 20中解决。 TS模块解决了这两个问题,有了它们,您就可以编写函数而无需像Java中那样毫无问题地拆分定义和实现。
注意:您不必拆分声明/定义。您只需要使函数inline
即可,否则链接器可能会对您大喊大叫。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。