微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在c ++中拆分函数的定义和声明?

如何解决为什么在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个原因:

  1. 必须先声明函数,然后才能对其进行调用。因此,如果您有fun1()调用fun2(),反之亦然,则无法在声明时为每个函数编写实现。

  2. 隐藏依赖项。如果实现依赖于某些包含,并且您不想要求函数的每个用户都包含它-那么您必须拆分声明和实现。

  3. C ++遵循糟糕的古老构建方案。标头被复制粘贴到其他标头中,并且每次都将重建。每次重新编译每个标头时,编译时间将变得可笑。

问题2和3在C ++ 20中解决。 TS模块解决了这两个问题,有了它们,您就可以编写函数而无需像Java中那样毫无问题地拆分定义和实现。

注意:您不必拆分声明/定义。您只需要使函数inline即可,否则链接器可能会对您大喊大叫。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。