关于c++的命名空间

目录

1.命名空间

[(1)hello world](#(1)hello world)

[(2)细讲hello world代码](#(2)细讲hello world代码)

(3)引用命名空间

(4)总结代码

2.自定义一个命名空间


1.命名空间

(1)hello world

cpp 复制代码
#include<iostream>
using namespace std;
int main(void)
{
   cout<<"hello world"<<endl;
   return 0;
}

(2)细讲hello world代码

  1. #inlcude<iostream>中iostream提供了一个叫命名空间的东西,标准的命名是:std
  2. using namespace std 叫引用命名空间
  3. cout就是黑屏幕相当于C语言中的printf,endl是换行符

(3)引用命名空间

  • 由于cout、endl包含在了std的标准命名空间中所以每次使用时可以直接引用,如:

std::cout<<"hello,world"<<std::endl;

  • 上一种方法实在太麻烦,每次都要引用。所以我们可以在main函数之前声明空间中的一个变量

using std::cout;

using std::endl;

  • 最后一种方法是直接在main函数之前使用命名空间:

using namespace std;

(4)总结代码

cpp 复制代码
#include<iostream> //iostream提供了一个叫命名空间的东西,标准的命名空间是:std
using namespace std;//命名空间

//方式二:
using std::cout;//声明空间中的一个变量
using std::endl;

//方式三:(最简便的方法)
using namespace std;

int main(void)
{
#if 0
	//方式一:
	std::cout << "hello world" << std::endl;  //cout就是黑屏幕  endl是换行符
#endif 

	cout << "hello world" << endl;

	int a = 0;
	cin >> a;//相当于C语言中的scanf输入函数
	cout << "a=" << a << endl;

	return 0;
}

2.自定义一个命名空间

cpp 复制代码
#include<iostream>
//定义一个普通的命名空间
namespace spaceA
{
   int g_a=10;
}
int main(void)
{
   return 0;
}

1.试着模仿标准命名空间的声明来使用三种方式在main函数中使用g_a这个变量

cpp 复制代码
#include<iostream>
using namespace std;
namespace spaceA
{
   int g_a=10;
}
//方法二:
using spaceA::g_a;

//方法三:
using namespace spaceA;
int main(void)
{
   //方法一:
   cout<<"g_a="<<spaceA::g_a<<endl;
 
   
   return 0;
}

2.升高难度:创建一个嵌套式的命名空间

cpp 复制代码
#include<iostream>
using namespace std;
namespace spaceA
{
	int a = 20;
	namespace spaceB
	{
		struct teacher
		{
			int id;
			char name[23];
		};
	}
}
int main(void)
{

	return 0;
}

3.试着再用三种方法来使用命名空间spaceB中的结构体teacher

cpp 复制代码
#include<iostream>
using namespace std;
namespace spaceA
{
	int a = 20;
	namespace spaceB
	{
		struct teacher
		{
			int id;
			char name[23];
		};
	}
}
//第二种方法:
//using spaceA::spaceB::teacher;

//第三种方法:
using namespace spaceA::spaceB;
int main(void)
{
	//第一种方式:
	//spaceA::spaceB::teacher t1;
	//t1.id = 20;

	//teacher t1;

	teacher t1;
	
	return 0;
}
相关推荐
触底反弹1 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术5 小时前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
浮生望6 小时前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰7 小时前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法
地平线开发者17 小时前
J6B vio scenario sample
算法
BothSavage1 天前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn1 天前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽1 天前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
郝学胜_神的一滴1 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake