雪傲天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日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟