C++初阶-命名空间

本文介绍了C++中的命名空间概念,用于解决变量、函数命名冲突的问题,特别是在多人协作的项目中。通过示例展示了如何定义、使用命名空间,包括嵌套命名空间。还讲解了如何通过域作用限定符`::`来访问命名空间内的元素,并讨论了`using`关键字的作用。最后,通过实例解释了C++标准库中的`iostream`,包括`cout`、`endl`和`cin`的使用方式。
摘要由CSDN通过智能技术生成

        现在我们开始进入cpp的学习,我们首先要介绍的是命名空间(namespace),这是一个关键字

        我们自己定义的变量、函数可能跟库里面重名冲突。当进入公司项目组,多人协作,同事之间写的代码可能存在命名冲突。而c语言没有好的办法解决这一问题,因此,cpp提出了一个新语法,命名空间。

#include<stdio.h>
#include<stdlib.h>

//定义一个叫qwe的命名空间  -- 域
namespace qwe
{
    //他们还是全局变量,放在静态区
	int rand = 0;
	int a = 1;
}

int main()
{
	printf("%d\n", rand);
	printf("%d\n", qwe::rand);
	return 0;
}

          这里的rand如果不指定命名空间域的话,就和库里面的rand函数命名冲突了。当然,命名空间中也可以定义变量、函数、类型

namespace qwe
{
	//命名空间中可以定义变量/函数/类型
	int rand = 10;

	int Add(int left, int right)
	{
		return left + right;
	}

	struct Node
	{
		struct Node* next;
		int val;
	};
}

        当然,命名空间可以嵌套

namespace N1
{
	int a;
	int b;

	int Add(int left, int right)
	{
		return left + right;
	}

	namespace N2
	{
		int c;
		int d;

		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

        那么,命名空间如何使用呢?这里我们需要知道域作用限定符  ::  。在c语言阶段我们已经知道了一些。

int a = 0;
int main()
{
	int a = 1;
	printf("%d\n", a);         //1
	printf("%d\n", ::a);       //0

	return 0;
}

        知道了这些,我们理解起来应该会很轻松。 

int main()
{
	qwe::rand = 20;         //变量
    
	struct qwe::Node node;  //结构体的调用稍微有点区别

	qwe::Add(1, 2);         //函数

	N1::Add(1, 2);
	N1::N2::Sub(3, 4);      //嵌套命名空间的调用

	struct asd::ListNode ln;  //命名空间在头文件中也一样
	asd::ListInit();

	return 0;
}

        全部展开也是可以的,展开一部分也是可以的

using namespace asd;

using asd::ListNode;

        接下来就是我们初学者常见的代码了

#include <iostream>
using namespace std;   //C++库的实现定义在一个叫std的命名空间

int main()
{
	cout << "hello world" << endl;

	return 0;
}

还有这样的

#include <iostream>

int main()
{
	std::cout << "hello world" << std::endl;

	return 0;
}

这样的

#include<iostream>
using std::cout;
using std:: endl;

int main()
{
	cout << "hello world" << endl;
	return 0;
}

到这里我们已经能看懂这些代码的大概了

下面我们来简单介绍下cout、endl和cin

#include<iostream>
using namespace std;      //练习的话我们全部展开好了

int main()
{
	cout << "hello world" << endl;
	cout << "hello world\n";
	printf("hello world\n");

	int i = 10;
	double d = 1.11;                    //cout 流插入
	cout << i << " " << d << endl;      //自动识别类型

	cin >> i >> d;                       //流提取
	cout << i << " " << d << endl;

	return 0;
}

        

 

 

 

 

 

 

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值