关于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 分钟前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer6 分钟前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq8 分钟前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
wheeldown35 分钟前
【数据结构】选择排序
数据结构·算法·排序算法
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山2 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
青花瓷2 小时前
C++__XCode工程中Debug版本库向Release版本库的切换
c++·xcode
睡觉谁叫~~~2 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
音徽编程2 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
观音山保我别报错2 小时前
C语言扫雷小游戏
c语言·开发语言·算法