C向C++过渡篇(二)

-----------函数重载

介绍:在同一个项目中,定义的函数名可以重复
要求:函数名相同
         函数的参数表不同(个数不同 或 个数相同但不同位置上的数据类型不同)

#include<stdio.h>

int func(int n)
{

}
float func()
{

}
double func(int n, float v)
{

}
int main()
{
	func();
	func(5);
	func(5,3.0f);//系统默认小数为双精度double类型,所以加个f
	return 0;
}

注意:返回值类型不影响是否构成函数重载,编译器不管返回值类型

----------引用


简而言之,就是对一个变量或者对象取的别名
格式:数据类型& 别名 = 原名;

#include<stdio.h>

int main()
{
	int num = 0;
	int& num1 = num;//此后,num1就是num
	printf("num = %d\n", num);
	printf("num1 = %d\n", num1);
	num1 = 100;
	printf("num1 = %d\n", num1);
	return 0;
}

注意:
1.定义引用之前必须要初始化
2.引用只是一个别名,不存在单独的内存给他,上面的num和num1对应的都是同一段内存
3.引用的类型必须和被引用的变量数据类型一样

引用存在的价值:写项目时,变量名太长可使用引用

----------命名空间


介绍:命名空间是用来组织和重用代码的编译单元。
作用:
1.多人协同开发大型项目,可能会出现同一变量名代表不同的含义。代码放在一起跑时,会出现歧义。通过命名空间可以来避免冲突,解决同名问题。


   形象的理解:


两所高中,它都有高一3班,那怎么区别?称呼其为“XX学校高一3班”即可,既说明了”高三一班“这个变量,又分清了是哪个学校的。

语法: namespace 命名空间名字
         {
           //这是命名空间的范围,可以在里面定义独属于此空间的变量(独属于此学校的高一3班)
           //也可在这写函数,此函数独属于此命名空间。若声明在命名空间内,在外部实现,需加上
           //此命名空间独属的标志(XX学校),如若不加,则不是同一个函数(不是此学校的高一3班)
           //在外面实现使,加标志的格式:在返回值类型后,加“ 命名空间名字 ::”

         }//结尾不加“ ;”

#include<stdio.h>

namespace NAME_1
{
	int num = 10;
	float val;
	void func_1()
	{
		printf("func_1()\n");
	}
	void func_2();
	namespace NAME_1_1
	{
		int num = 11;
	}
}
void NAME_1::func_2()
{
	printf("func_2()\n");
}

namespace N = NAME_1;

int main()
{
	int num = 9;
	printf("num = %d\n",num);//输出的是上一步定义的int num = 9;    此步输出:num = 9
	//那我想要指定某个命名空间的num呢?(指定XX学校高一3班)
	//这时候我需要特别的说明 要哪个命名空间(指定要哪个学校的),用 “ ::”
	printf("num = %d\n", NAME_1::num);//此步输出:num = 10
	printf("num = %d\n", NAME_1::NAME_1_1::num);//11
	printf("num = %d\n", N::NAME_1_1::num);//11
	return 0;
}

注意:
1.作用域符  ::
2.命名空间名字需取合法标识符,符合取名规则
3.可以在全局定义,也可以在局部定义(可以在一个命名空间里面再定义一个命名空间,
   但使用的时候要依次使用作用域符,例子如上)。可以在命名空间里面定义命名空间,
   但是!不能在函数里面定义命名空间。
4.若出现两个命名空间名字相同,则说明这两个命名空间里面的内容合起来同属于一个命名空间(当前名字重复的哪个命名空间),都可以用此命名空间名+::去访问到
   用处:可以在不同的地方去完善命名空间
5.命名空间也可以取别名(当命名空间过长或不好记忆时不妨取个别名),
   使用别名时要在取完别名后,有先后顺序,不然编译器不清楚这个别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值