命名空间、函数重载理解

命名空间

命名空间内的变量只能在命名空间中使用,别处想要使用的话需要特殊声明:

  • 1.命名空间+::+成员
  • 2.using 命名空间::成员
  • 3.展开命名空间:using namespace 命名空间(前提:全局没有定义过)

以下是代码实例讲解:

using namespace std;
namespace N1
{
	int a = 0;
	int b = 1;
	void fun1()
	{
		printf("N1:fun1()\n");
	}
}

int a = 10;
void test()
{
	//全局:a
	printf("a: %d\n", a);
	//命名空间中成员的访问形式:
	//1.命名空间+::+成员
	printf("N1::a : %d\n", N1::a);
	//2.using 命名空间::成员
	using N1::b;
	printf("N1::b : %d\n", b);
	//3.展开命名空间:using namespace 命名空间(前提:全局没有定义过)
	// 命名空间下的所有成员全部都暴露在全局作用域中,会和全局域中的成员发生混淆
	using namespace N1;
	printf("N1::a : %d\n", a);
}

在C++中,头文件中定义的所有成员都属于std命名空间
因此在引用cin、cout时需要前面加上命名空间::

如果不想每次都加 std:: 也可以直接在最开始展开命名空间:using namespace std;

#include<iostream>

void test()
{
	//C++头文件中定义的所有成员都属于std命名空间
	//cin:支持连续输入,输入顺序:从左向右
	std::cin >> a >> a >>a;
	//cout:支持连续输出,输出顺序:从左向右
	std::cout << a << "" << "zfc" << a <<"\n";
	
	using namespace std;
	cin >> a;
	cout << a;
	cout << endl;	//endl:end line ->换行
}

缺省参数

缺省参数:定义函数时,给参数一个默认值
全缺省:所有参数都有默认值
半缺省:参数从右向左填写,中间不能有空值
声明和定义只能在一个地方设置默认值

void fun(int a)
{
	cout << a << endl;
}
//定义函数时,给参数一个默认值:缺省参数
//全缺省:所有参数都有默认值
//半缺省:参数从右向左填写,中间不能有空值
//声明和定义只能在一个地方设置默认值
void fun2(int a, int b);
void fun2(int a = 10, int b = 2)
{
	cout << a << endl;
	cout << b << endl;
}
void test2()
{
	fun(100);
	fun2();	//不传值时,使用默认值
}

函数重载

函数重载:函数名相同,参数不同:参数个数、顺序、类型

在C语言中如果需要传入不同的参数,则需要调用定义不同的函数

//C语言中传入不同类型参数,需要写对应类型的函数
int addInt(int a, int b)
{
	return a + b;
}
char addchar(char a, char b)
{
	return a + b;
}
double addDouble(double a, double b)
{
	return a + b;
}

C++实现可以通过对同一函数传入不同类型的参数(C语言中,同一作用域,函数名不能重复)

int add(int a, int b)
{
	return a + b;
}
char add(char a, char b)
{
	return a + b;
}
double add(double a, double b)
{
	return a + b;
}

以下示例:函数名相同,参数不同:参数个数、顺序、类型

void fun1(char a, int b)
{
	cout <<"fun1(char, int)" << endl;
}
//参数顺序不同
void fun1(int b, char a)
{
	cout <<"fun1(int, char)"<< endl;
}
//参数个数不同
void fun1(char a, int b, char c)
{
	cout << "fun1(char, int, char)" << endl;
}

void test()
{
	int a = 1;
	char b = 'b';
	fun1(a, b);
	fun1(b, a);
	fun1(b, a, b);
}

错误示例:只有返回值类型不同,不能构成函数重载,程序会报错

//只有返回值类型不同,不能构成函数重载
void fun2(int b, char a)
{
	cout << "fun1(int, char)" << endl;
}
int fun2(int b, char a)
{
	return a;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值