c++入门基础__作用域

c和c++的区别

c有冲突问题

c++的命名空间解决了命名冲突问题

命名空间的作用域问题

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
//释放命名空间(c语言有命名冲突问题)
using namespace std;
namespace wang
{
	int rand = 0;
}
int main()
{
	printf("hellow world\n");
	printf("%p\n",rand);
	//域作用限定符
	printf("%p\n",wang::rand);
}

命名空间的使用

命名空间的定义

命名空间内可以定义变量、函数、类型

namespace wang
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}
	struct Node
	{
		struct Node* next;
		int val;
	};
}

调用自定义作用域的内容

方法一:说明调用的空间

	//调用
	printf("%p\n", wang::Add(1,2));
	struct wang::Node node;

方法二:展开命名空间

但是全部展开可能有冲突的问题

using namespace wang;
using wang ::Add;

命名空间可以套命名空间(一般是两层)

namespace wang
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}
	struct Node
	{
		struct Node* next;
		int val;
	};
	namespace zhang
	{
		int rand = 9;
	}
}
int main()
{

//调用
	printf("%p\n", wang::zhang::rand);
	
	return 0;
}

命名空间和头文件

std是c++标准库的命名空间

命名空间的展开是命名空间 的授权

头文件#include<>过去相当于是拷贝过去了

c++查找网站

网站:Reference - C++ Reference

PS.

命名空间会自动合并

比如

建一个Stack.h的头文件

#pragma once
namespace wang
{
	void StackIntit()
	{
		cout << "void StackIntit() " << endl;
	}
}

再建一个Queue.h的头文件

#pragma once
namespace wang
{
	void QueueIntit()
	{
		cout << "void QueueIntit() " << endl;
	}
}

调用

两个命名空间同名,但是没有报错

using std::cout;
using std::endl;
#include"Stack.h"
#include"Queue.h"
int main()
{
	wang::StackIntit();
	wang::QueueIntit();
	return 0;
}

cout

<<流插入运算符

cin

>>流提取运算符

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值