首页 > 编程语言 >4.C++中程序中的命名空间

4.C++中程序中的命名空间

时间:2024-09-17 14:52:39浏览次数:11  
标签:std 定义 prnt 程序 void namespace C++ 命名

咱们在前面的程序中,提到过使用using namespace std;引入这个命名空间,那么std就是由编程系统提供的标准命名空间,那什么是命名空间呢?

想像一下,比如一个年级的学生,在记录的时候出现了重名的情况,那么这个时候应该怎么记录呢,是不是需要加一些其它的名称,比如,一三班小李同学,一一班小李同学,那个C++中也会存在类似的情况,比如我们定义一个打印函数,

#include <iostream>
using namespace std;

void prnt()  //打印A
{
	cout << "printA" << endl;
}

int main()
{
	prnt();
	return 0;
}

上面定义了一个prnt()函数,程序执行:

但是如果想再定义一个,那么这个时间,如果再写一个,会出现什么情况?

#include <iostream>
using namespace std;

void prnt()  //打印A
{
	cout << "printA" << endl;
}
void prnt()  //打印A
{
	cout << "printB" << endl;
}

int main()
{
	prnt();
	return 0;
}

这个时候运行程序,会出现什么情况?

下面的错误提示,

提示重复定义。

这个时候应该给一个改名,当然改名字没有任何问题,可以使用,但是如果不改名,应该怎么处理,这个时候就可以使用命名空间,

#include <iostream>
using namespace std;

namespace A {
	void prnt() { //打印A
		cout << "printA" << endl;
	}
}
namespace B {
	void prnt() { //打印A
		cout << "printB" << endl;
	}
}
int main() {
	A::prnt();
	B::prnt();
	return 0;
}

增加了两个命名空间,A和B,在使用的时候,直接使用A::prnt();B::print()即可调用不同的函数,就像喊小李同学一样,如果直接喊,那么不知道叫的哪个,但是如果加上一一班小李同学,那么这个时候就可以明确确定是叫谁,这个规则是一样的。

命名空间可以定义到一个文件中,也可以定义到几个文件中,即不一定是连续的文件中,这个时候只要引入即要将同样的命名空间引入。

命名空间中可以定义常量,变量,函数等,并且可以嵌套,如

#include <iostream>
using namespace std;

namespace A {
	namespace AA{
	void prnt() { //打印A
		cout << "printA" << endl;
	}
	}
}

int main() {
	A::AA::prnt();
	return 0;
}

在A的命名空间中再定义了AA的空间,那么引入的时候,就成了A::AA::prnt()即可。

但是注意命名空间只能定义到全局,不能定义到函数中,比如

#include <iostream>
using namespace std;

void funA()
{
	namespace A {
		namespace AA {
			void prnt() { //打印A
				cout << "printA" << endl;
			}
		}
	}
}
int main() {
	A::AA::prnt();
	return 0;
}

那么这个时候就是错误的,

 这个在使用的时候注意即可。

标签:std,定义,prnt,程序,void,namespace,C++,命名
From: https://blog.csdn.net/fly_binbin/article/details/142314553

相关文章

  • macOS Sequoia 15 发布,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验
    macOSSequoia15.0(24A335)正式版ISO、IPSW、PKG下载2024年9月17日凌晨1点TimCook领导的Apple今天发布了macOS15Sequoia正式版,这是专为Mac运行的操作系统的最新版本。macOSSequoia是一个免费更新,可以在2018年及更高版本的MacBookPro、2020年及更高......
  • C++信奥老师解一本通题 1370:最小函数值(minval)
    ​【题目描述】有n个函数,分别为F1,F2,...,Fn。定义Fi(x)=Ai*x*x+Bi*x+Ci(x∈N∗)。给定这些Ai、Bi和Ci,请求出所有函数的所有函数值中最小的mm个(如有重复的要输出多个)。【输入】第一行输入两个正整数n和m。以下nn行每行三个正整数,其中第ii行的三个数分别位Ai、Bi和Ci输入数......
  • 基于django+vue高校毕业论文管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育规模的持续扩大,毕业论文作为衡量学生综合素质与专业能力的重要环节,其管理工作日益复杂。传统的手工管理方式已难以满足当前高......
  • 【开题报告】基于django+vue网上购物商城系统(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代商业活动不可或缺的一部分,极大地改变了人们的购物方式和消费习惯。网上购物商城作为电子商务......
  • 基于django+vue高校毕业班校务管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育规模的不断扩大,高校毕业班管理面临着前所未有的挑战。传统的手工管理方式已难以满足当前复杂多变的校务管理需求,特别是在学生......
  • 基于django+vue高校笔记分享系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,高等教育领域正经历着前所未有的变革。随着知识更新速度的加快和在线学习平台的兴起,学生们对于高效获取、整理与分......
  • 基于django+vue高校班级事务管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育规模的不断扩大与信息技术的飞速发展,高校班级管理面临着前所未有的挑战。传统的手工记录、口头传达等管理方式已难以满足日益......
  • C++:多态
    目录一.多态的概念二.多态的定义及其实现1.虚函数2.虚函数的重写/覆盖3.实现多态的条件 4.虚函数重写的例外5.析构函数的重写6.经典例题7.C++11override和final关键字8.重载、重写/覆盖、隐藏的区别三.抽象类四.多态的原理1.虚函数表指针2.多态如何实现3.动态......
  • C++面试考点:拷贝赋值运算符和拷贝构造函数有什么区别?
    定义和功能拷贝构造函数拷贝构造函数是一种特殊的构造函数,用于创建一个新对象,该新对象是作为另一个同类型对象的副本而创建的。其函数原型通常为类名(const类名&other)(在C++11之前,const也可省略)。例如:classMyClass{public:MyClass(constMyClass&ot......
  • C++11 线程同步接口std::condition_variable和std::future的简单使用sk
    合集-C++(1)1.C++11线程同步接口std::condition_variable和std::future的简单使用09-17收起std::condition_variable条件变量std::condition_variable有wait和notify接口用于线程间的同步。如下图所示,Thread2阻塞在wait接口,Thread1通过notify接口通知Thread2继续执行。......