雪傲天1 2023-03-09 18:48 采纳率: 96.2%
浏览 20
已结题

难道ave函数没有被重定义,如何解决?

为什么这里没有发生重定义

这是main.cpp文件

```c++
#include<iostream>
#include "e.h"
int ave()
{
    return 0;
}
int main()
{
    std::cout << ave();
    system("pause");
    return 0;
}


//这是e.h
 int ave();
//这是e.cpp
```c++
#include"m.h"
int ave()
{
    return 1;
}

难道ave函数没有被重定义?

  • 写回答

1条回答 默认 最新

  • MarkHan_ 2023-03-09 18:55
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    在你的示例中,没有发生重定义,因为你在 main.cpp 中定义的 ave() 函数与 e.cpp 中定义的 ave() 函数是两个不同的函数。在 C++ 中,每个函数都有其自己的作用域(scope),函数名只在其定义所在的作用域内具有唯一性。因此,如果你在不同的文件中定义了同名的函数,它们不会互相干扰,也不会发生重定义错误。
    ·
    如果你将 int ave() 的定义移动到 e.h 中并将其包含在 main.cpp 和 e.cpp 中,则会出现重定义错误。因为这会使得 ave() 的定义在 main.cpp 和 e.cpp 中都可见,从而引发重定义错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?