C++初级:命名空间,输入输出,缺省参数,函数重载

一,命名空间

1.1命名空间简介

   在C++中命名空间的存在是为了解决源代码中的重名问题。想象一个团队合写一个”小区‘四害’杀防系统“的软件,你负责用户操作界面模块,小丁负责”四害“数据定义模块。写着写着,你需要定义”鼠标“,而他需要定义”耗子“,因此很可能 重复地叫”mouse"了。
  在学校中一般经常会有同名的学生,在这种情况下为了避免同名的麻烦,学校一般都会把同名的学生分配到不同的班级,比如都叫陈静,一个在1班,一个在二班,这样就可以避免指代不清了。
  类似的,在C++中可以给程序加上不同的命名空间(namespace),这样不同的空间下名字就可以重名了!命名空间和名字之间用符号( :: )。比如上述的例子:class one :: chenjing和class two ::chenjing。以输出两个同名的年龄为例,代码如下:

#include<iostream>
using namespace std;
namespace classone
{
	int chenjing = 20;
}

namespace classtwo
{
	int chenjing = 19;
}

int main()
{
	cout << classone::chenjing << endl;
	cout << classtwo::chenjing << endl;
}
//输出结果20 19

cout 和 endl 同样位于命名空间 std 中(整个C++标准库都位于std命名空间中)如果不引用 namespace std 那么上述输出年龄的代码将有以下的写法

#include<iostream>

namespace classone
{
	int chenjing = 20;
}

namespace classtwo
{
	int chenjing = 19;
}
int main()
{
	std::cout << classone::chenjing << std::endl;
	std::cout << classtwo::chenjing << std::endl;
}

1.2命名空间使用

1,命名空间的定义

#include<iostream>
using namespace std;
//定义一个名字为A的命名空间
namespace A
{
	int x = 100;
}
//定义一个名字为B的命名空间
namespace B
{
	int x = 50;
}
//调用A中的x:A::x
//调用B中的x: B::x
void test()
{
	cout << "A中x= " << A::x << endl;
	cout << "B中x =" << B::x << endl;
}

2,命名空间只能在全局范围内定义,因此命名空间中的变量属于全局变量
若
若在test函数内使用命名空间则编译器会进行报错,因此命名空间制可定义在全局变量中。

3,命名空间可以嵌套

namespace A
{
	int x = 100;
	namespace B
	{
		int x = 50;
	}

}
void test()
{
	cout << "A中x= " << A::x << endl;
	cout << "B中x =" << B::x << endl;
}

4,命名空间可以存放函数和变量

#include<iostream>
using namespace std;
namespace X
{
	int a = 10;
	int Add(int x,int y)
	{
		return x + y;
	}
}

int main()
{
	cout << "X中a= " << X::a << endl;
	cout << X::Add(3, 5) << endl;
}

二,输入输出

  在C语言中,我们一般使用的是scanf输入,printf输出。而在C++中为我们提供了一种新的输入输出方式:使用cin,cout完成输入输出的功能。下面是一串代码示例:

#include<iostream>
using namespace std;
int main()
{
	int a;
	double b;
	char c;
	cin >> a;//键盘上输入一个整型
	cin >> b >> c;//同理输入一个浮点数和一个字符
	cout << a << endl;//输出即在屏幕上打印你输入a的内容
	cout << b << " " << c << endl;//同理
}

根据以上代码示例我们须知几点:
1.使用cin和cout时需要包含 <iostream>头文件,以及按命名空间使用方法使用using std
2,<< 是流插入运算符 ,>>是流提取运算符
3,使用C++的输入输出的方法时,不用像C语言中printf函数那样需要%s %d等操作识别变量的数据类型,它可以自动识别变量类型。
4,cin和cout既不是关键字也不是函数,而是全局流对象,它们的用法非常的强大灵活,以上只是最基础的功能。

三,缺省参数

3.1缺省参数的概念

  缺省参数是声明或定义函数时为函数的参数指定一个缺省值,在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参

void Func(int a = 10)
{
	cout << a << endl;
}

int main()
{
	Func();//输出缺省值10
	Func(20);//指定参数20,则输出20.
	return 0;
}

3.2缺省参数的分类

  全缺省:a,b,c,全都有缺省值

void Func(int a = 10,int b = 20,int c = 30)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
}

int main()
{
	Func();
	Func(20,10);
	
	return 0;
}

半/部分缺省:

//a 和 b 未给出缺省值即部分缺省
void Func(int a,int b ,int c = 30)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
}

int main()
{
	Func(1,2);
	Func(20,10,5);
	
	return 0;
}

注意:1.缺省值只能从又往左依次给出,不能隔着给。例如 以上 代码,若 在main函数中写出这样的代码:Func(10, ,20)则会报错
2.缺省参数不能在声明和定义中同时出现
3.缺省值必须是常量或者 全局变量
3.缺省参数C语言不支持

四,函数重(chong)载

先看这样一串代码


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

int main()
{

	int ret1 = Add(1, 2);
	double ret2 Add = (1.1, 2.2);
	printf("%d ", ret1);
	printf("%f ", ret2);
}

这是一串错误的代码,如果写了一个Add加法函数定义为int类型,则无法使用该函数进行浮点数的相加,这会导致加法函数不是那么的实用。而在C++中函数重载便很好的弥补了这样的不足

4.1函数重载的概念

函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能相似的同名函数,这些同名函数的形参列表(参数个数或类型或类型顺序)不同,常用来处理实现功能类似数据类型的不同问题。

4.2函数重载的分类

参数个数不同

void Func(int a)
{
	cout << a << endl;
}

void Func(int a, int b)
{
	cout << a << ' ' <<  b << endl;
}

int main()
{
	Func(1);
	Func(2, 3);
}

参数类型不同

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

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

int main()
{
	cout << Add(2.2, 3.3) << endl;
	cout << Add(2, 3) << endl;
}

参数类型顺序不同

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

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

int main()
{
	cout << Add(2.2, 3) << endl;
	cout << Add(2, 3.3) << endl;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值