C++介绍及其重载、缺省参数函数、命名空间

介绍C++

C++是C语言的继承,它是既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点为特点的面向对象的程序设计语言。

重载

函数重载是指同一个函数名可以对应多个函数实现,函数名相同而参数列表不同的函数就是函数的重载。例如对Swap()交换函数进行重载,可以实现两个整数的交换,两个小数的交换,两个字符的交换······

函数重载规则:

  • 函数名必须相同;
  • 函数列表必须不同;
  • 函数返回值类型可以不同;

注意:

参数列表包括:参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数列表的不同

例如:

func(int a, int b, int c)

func(char a, char b, char c)//参数类型不同


func(int a, int b)

func(int a)//参数个数不同


func(int a, char b, double c)

func(int a, double c , char b)//参数顺序不同

例:

void Swap(int *x,int *y)//交换两个整数
{
	int tmp = *x;
	*x = *y;
	*y = tmp;
}

void Swap(char *x, char *y)//交换两个字符
{
	char tmp = *x;
	*x = *y;
	*y = tmp;
}

为什么C++支持重载,而C不支持重载?

在编译C代码中,编译器是通过函数名来寻找函数地址的,因而函数名不能相同。而在编译C++代码中,编译器在编译时会根据参数列表对函数进行重命名,例如Swap(int* x,int* y)被重命名为_Swap_int_int(int* x,int* y),Swap(char* x,char* y)被重命名为_Swap_char_char(char* x,char* y),当进行函数调用时,编译器根据传入的参数逐个匹配,选择对应的函数,如果没有匹配,编译器则会报错,不同的编译器会有不同的命名规则,但本质上这些函数是不同的函数;

缺省参数函数

缺省参数函数就是将函数的某些参数取一个默认值时,如果没有传入该参数,则采用默认值;

缺省参数函数规则:

1.如果函数已经带有缺省参数函数的声明,则在该函数的定义中不允许出现缺省值。

2.一旦函数的某个参数指定了缺省值,则后续参数也必须定义缺省值;

3.调用函数时,若略去一个参数的值,则应略去后续参数的值;

例:

半缺省

func(int a,int b=5);

func(1);    func(1,2);    //参数a没有缺省,必须有值

全缺省

fun(int a = 2,int b = 6)

fun();    fun(1);    fun(1,2);

命名空间

命名空间时一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分开来。

如:

namespace ns
{
    int a;
    double b;
    char c;

}

ns是命名空间的名称,在ns命名空间中声明了变量a、b、c,在使用这些变量时,必须加上命名空间名和作用域分辨符"::",例如ns::a,ns::b。

命名空间中的成员可以包含以下类型:

  • 变量(可以初始化)
  • 常量
  • 结构体
  • 模板
  • 命名空间(不可同名)

使用方法

1.命名空间名::成员名

2.使用命名空间别名

例:    namespace student{...}

          namespace stu = student;    //student的别名stu等价

3.使用using命名空间别名

例:在一作用域中,使用" using ns::a; "后,在本作用域使用该命名空间成员时,不必使用命名空间限定;

无名的命名空间

C++允许使用无名的命名空间

例:    namespace

            {...}

标准命名空间std

wo标准C++库中的所有标识符都是在一个名为std的命名空间中定义的。

使用:using namespace std;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值