首页 > 其他分享 >learncpp-2 函数和文件

learncpp-2 函数和文件

时间:2024-07-22 22:18:01浏览次数:7  
标签:std 文件 函数 作用域 空间 learncpp 命名 标识符 定义

2 函数和文件

2.9 命名冲突和命名空间

  • 两个(或多个)同名函数(或全局变量)被引入到属于同一程序的不同文件中,这将导致链接器错误。
  • 两个(或多个)同名函数(或全局变量)被引入到同一个文件中。这将导致编译器错误。
  • 不同的作用域(例如命名空间)中可以有相同的标识符
  • 只有声明和定义可以出现在命名空间的作用域中,可执行代码不能出现在命名空间中(但是命名空间中可以包含函数的定义,而函数的定义中可以包含可执行的代码)
  • 全局命名空间
    • 任何没有在类、函数、命名空间中定义的名称都是隐式定义的命名空间的一部分,这个隐式定义的命名空间称为全局命名空间/全局作用域
    • 在全局作用域内声明的标识符从声明处到文件末尾都是有效的
    • 尽量避免在全局作用域中定义变量
    • #include语句引入的声明也在全局作用域中
  • std命名空间
    • C++将标准库中的所有功能都移到了一个名为std的命名空间中
  • 当标识符包含命名空间前缀时,该标识符称为限定名
  • 避免使用using指令(例如using namespace std;),这可能会导致我们自己定义的标识符和std命名空间里的标识符产生冲突(这就是为什么要将标准库中的所有标识符移到std命名空间中的原因!!!)
#include "iostream"
int cout = 3;
int main() {
    cout << "aaa"; // 编译报错:Invalid operands to binary expression ('int' and 'const char[4]') 因为cout是int
    std::cout << "aaa"; // 编译通过
    return 0;
}
#include "iostream"
using namespace std;
int cout = 3;
int main() {
    cout << "aaa"; // 编译报错:Reference to 'cout' is ambiguous:candidate found by name lookup is 'cout';candidate found by name lookup is 'std::cout'
                   // 因为编译器不知道这里的cout是全局命名空间里的cout(int)还是std命名空间里的cout(ostream)
    return 0;
}

标签:std,文件,函数,作用域,空间,learncpp,命名,标识符,定义
From: https://www.cnblogs.com/akongogogo/p/18317104

相关文章

  • 2048小游戏【C语言版】单文件编写
    设计思路游戏地图和初始设置:使用一个4x4的二维数组map来表示游戏地图。初始时,所有位置的值均为0。score记录玩家得分,move_num记录移动次数。随机生成数字:在地图上随机选择一个空位置生成2或4。只有在地图发生变化时才会生成新数字。游戏菜单:使用m......
  • 数论函数基础
    数论函数基础数论函数是数论中相当重要的一环,我们先来将*一些基本的函数——\(\color{black}\textsf{H}\color{red}\textsf{\_W\_Y}\)*:同“讲”,讲述全文绝大多数内容是对[0]中讲述的粗略抄写和胡乱加工关于加性函数和积性函数的部分,参考[3]1......
  • python函数基础详解
    1.函数的目的在python中使用函数可以减少重复代码,提复用率,目的为了封装一定的功能,比如print封装了打印输出的功能。2.函数的定义是我们在编写程序的时候,临时创建一个新的函数,一个可以重复使用函数的过程,一个简单的函数定义包括,函数名,形参和实参,返回以及调用。3.函数的声明......
  • (图文)vscode cph设置文件路径(全网首发,但是丐版)
    目录引言(全是废话,不要看,直接跳到正文)正文(直接看这就行)引言(全是废话,不要看,直接跳到正文)由于我经常使用洛谷刷题,并且我使用vsocde作为编辑器,那么必不可少的就是一个叫做vscode-luogu的插件,这个插件可以实现题目的搜索、查看和提交(不过貌似这个插件已经停更了),如果你还装了c......
  • 附加篇 函数经典模块
    1.open函数使用 在Python中,open()函数用于打开文件,并返回一个文件对象,可以用于读取或写入文件。f=open("./44.函数的参数.py",mode='r',encoding="utf8")#是否可读#print(f.readable(),f.writable())#读取整个文件返回字符串content=f.read()print(cont......
  • 特别篇 函数基础
    1.函数目的 函数的主要目的是提高代码的模块性和重用性。defadd_numbers(a,b):"""Thisfunctiontakestwonumbersasinputandreturnstheirsum."""returna+b#调用函数并打印结果result=add_numbers(3,5)print("Thesumof3and5......
  • Python学习—函数篇 面面俱到,细致讲解
    目录1.函数目的2.函数定义3.函数的调用4.函数的形参,实参5.函数的返回值1.返回一个值2.返回多个值3.没有返回值4.返回None6.函数的参数类型1.必需参数2.关键字参数3.默认参数4.可变参数5.关键字可变参数7.匿名函数基本语法示例1.函数目的在编程中,定......
  • EXCEL初级入门--(第四章 函数进阶学习)-中
    文章目录(十四)MatchVlookup应用对比Match(十五)IndexMatch多条件应用案例Index(十六)IndexMatch数组嵌套IndexMatch(十七)唯一Subtotal唯一的筛选函数Subtotal(十八)Sumproduct函数应用Sumproduct(十九)条件求和函数1、sum2、sumif3、sumifs(二十)条件计......
  • SAMBA文件共享与DNS域名服务
    关闭firewall和selinux[root@ftpserver~]#systemctlstopfirewalld[root@ftpserver~]#systemctldisablefirewalld[root@ftpserver~]#setenforce0在配置文件中修改[root@ftpserver~]#vim/etc/selinux/configOft/[root@ftpserver~]#yum-yinstall--do......
  • 定制化智能:Mojo模型与自定义损失函数的深度融合
    定制化智能:Mojo模型与自定义损失函数的深度融合在机器学习领域,损失函数是衡量模型预测值与实际值差异的关键指标,它直接影响到模型训练的效果和最终性能。Mojo模型,作为一种高效的模型部署方式,其对自定义损失函数的支持是实现高级机器学习应用的重要特性。本文将详细探讨Mojo......