【c++入门】域的认识

1.域的意义

在c语言的项目中,我们可能会因为变量的名字定义重复而报错,例如我们的命名和别人写的头文件的相关函数命名重合时,我们的程序就有会报错,所以在c++中我们引用了域的概念来完善c中的不足。

2.什么是域?

所谓域就是值一块独特的领域,这块领域包括它的所属成员(一个常量或者一个函数均可)。

我们来看以下代码:

//域1
namespace pro1
{
	int x = 9;//领域所属成员x
}

//域2
namespace pro2
{
	int x = 8;
}

int x = 1;//全局变量
int main()
{
	printf("%d", pro1::x);//结果:9
	return 0;
}

我们先不管这串代码是什么意思,我们后文会讲解到。

在这串代码中我们创建了两个域,这两个域虽然都有成员x,但这两个x是相互独立的存在。

当我们使用领域的所属成员时,我们需要再前面声明它是谁家的x,这就相当于告诉计算机:你给我去这个地方找人去,找不到就别回来啦!

3.域的命名

在c++中我们使用namespace的方法来命名一个域,namespace后面是域的名字,括号里的内容是域的成员,在这个域中我们虽然可以随心所欲的创建我们的成员,但在同一个域中我们依然不能使用完全相同的命名。

正确命名如下:

namespace pro3
{
	struct heap
	{
		int data;
		struct heap* left;
		struct heap* right;
	};

	int Add(int x, int y)
	{
		return x + y;
	}

	int x = 8;//基本上想放什么就能放什么
}

那么如果我们命名两个域名字相同的域呢?我们的祖师爷早就想好了这种可能,所以当两个域的名字相同时就会自动合并为一个域。

例如:

namespace pro4
{
	int a = 1;
}
namespace pro4
{
	int b = 2;
}
//不会报错,相当于pro4成员里有两个成员一个是a另一个是b

4.域的使用

域在使用时使用的是预作用限定符,也就是‘::’,两个引号连用。

它是一个双目操作符,符号的左面是域的名称,右边是域的成员,当域里没有该成员时程序便会报错,让计算机在特定领域中找一个不存在的成员属实是强机所难了(doge)。

注意:如果我们不指定域我们无法使用那个域的成员!!

通过该符号我们可以改变域成员的值,引用里面的结构体,或者是函数等。

使用方法如下:

namespace pro3
{
	struct heap
	{
		int data;
		struct heap* left;
		struct heap* right;
	};//放一个结构体

	int Add(int x, int y)
	{
		return x + y;
	}//再放一个函数

	int x = 8;
}

int main()
{
	pro3::x = 9;

	printf("%d ", pro3::x);//结果:9

	printf("%d ", pro3::Add(1, 9));//函数的使用,结果:10

	struct pro3::heap hp;//注意:结构体的使用有些不同,hp是这个结构体的名字

	return 0;
}

编译器使用顺序

在常量名字相同时,常量的使用遵循以下规则:

1.如果没有指定域,优先使用局部变量,没有局部变量再使用全局变量。
2.如果指定了域,那么就使用域里的成员。

例如:

int x = 1;//全局变量
int main()
{
	int x = 4;
	printf("%d ", x);//结果:4
	
	printf("%d",::x);//如果前面没有指定域那么就会使用全局变量,结果:1
	return 0;
}

using的使用
using的使用方法如下:

using namespace 域的名字;

这个方法的使用可以使域里面的成员全部变成全局变量,如果是在局部定义的会变成局部变量,相当于把域的括号给删掉了,这样的话使用起来会方便一些。

例如:

namespace pro4
{
	int b = 2;
}
using namespace pro4;

int main()
{
	printf("%d", b);//可以直接使用了
	return 0;
}

我们再举个例子,在我们引用头文件时,是无法直接使用里面的函数的,例如我们在使用cout…endl函数时一般会在前面这么写:

#include<iostream>
using namespace std;

这是因为cout…endl函数分装在了std域里面了,加上一句using会使用的更方便一些。

感谢各位观众老爷的观看~欢迎下次光临。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值