C++入门(下)

目录

一、缺省参数

1.1缺省参数概念

1.2缺省参数分类 

二、函数重载

2.1函数重载概念

2.2函数重载分类

三、引用

3.1使用方法

3.2引用的要求

3.3引用和指针的区别

四、inline内联函数

五、auto关键字

5.1aoto介绍

 5.2aotu使用方法

5.2.1auto定义指针

5.2.2auto定义引用

5.2.3auto同时定义多个变量

六、nullptr(空指针)


一、缺省参数

1.1缺省参数概念

缺少参数是函数在声明或定义时给参数的一个缺省值(预备值),调用函数时,如果没有指定参数的值就使用缺省值,如果指定了就使用指定的参数。

//缺省参数
void op(int a = 0)
{
	cout << a << endl;
}

int main()
{
	op();//未指定参数值
	op(2);//指定参数值
	return 0;
}

1.2缺省参数分类 

全缺省参数

void xp(int a = 0, int b = 1, int c = 2)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}

半缺省参数 

void cp(int a, int b = 1, int c = 2)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}

注:

1.缺省值必须是常量或全局变量。

2.半缺省参数必须从右向左缺省,不能间隔或顺序颠倒。

3.缺省参数不能在定义和声明中同时出现,只能出现一个。

二、函数重载

2.1函数重载概念

函数重载是函数的一种特殊情况,在C++编译中,允许在同一作用域出现同名函数,但要求这些函数的形参列表(参数个数、参数类型、参数类型的顺序)不同。

//函数重载
int Sub(int a, int b)
{
	cout << "Sub-int" << endl;
	return a - b;
}
double Sub(double a, double b)
{
	cout << "Sub-double" << endl;
	return a - b;
}
int main()
{
	Sub(2, 3);//调用int函数
	Sub(2.3, 3.2);//调用double函数
	return 0;
}

2.2函数重载分类

2.2.1参数类型不同

//函数重载
int Sub(int a, int b)
{
	cout << "Sub-int" << endl;
	return a - b;
}
double Sub(double a, double b)
{
	cout << "Sub-double" << endl;
	return a - b;
}
int main()
{
	Sub(2, 3);//调用int函数
	Sub(2.3, 3.2);//调用double函数
	return 0;
}

2.2.2参数个数不同

//函数重载
void Sub()
{
	cout << "Sub-空" << endl;
}
void Sub(double a, double b)
{
	cout << "Sub-a-b" << endl;
}
int main()
{
	Sub();//调用空
	Sub(2, 3);//调用a,b函数
	return 0;
}

2.2.3参数顺序不同

//函数重载
void Sub(double a,int b)
{
	cout << "Sub-double-int" << endl;
}
void Sub(int a, double b)
{
	cout << "Sub-int-double" << endl;
}
int main()
{
	Sub(2.2,3);//调用double-int
	Sub(2, 3.3);//调用int-double
	return 0;
}

三、引用

引用是为已经存在的变量取一个别名,本质还是原本的变量,只是变量的另一个称呼。就像张三的外号法外狂徒一样,不管叫哪个名字都是同一个人。

3.1使用方法

类型& 引用变量名=引用实体

int main()
{
	int a = 5;
	int& b = a;//b引用了a
	cout << a << endl;
	cout << b << endl;
	return 0;
}

3.2引用的要求

 1.引用在定义时必须初始化。

int a = 2;
int& b;

 

2.同一个变量可以被多次引用

int main()
{
	int a = 5;
	int& b = a;
	int& c = a;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	return 0;
}

3.引用一但使用,不可更改

int main()
{
	int a = 5;
	int c = 2;
	int& b = a;
	int& b = c;//b重定义了
	return 0;
}

 

4.引用类型要相同

int main()
{
	int a = 5;
	double& b = a;
	return 0;
}

 

5.引用不可初始化为常量

int main()
{
	const int a = 5;
	int& b = a;
	int& c = 10;
	return 0;
}

3.3引用和指针的区别

 1.引用是变量的别名,指针是变量的地址。

2.引用在定义时必须初始化,指针没有要求。

3.引用不能改变,指针可以。

4.没有NULL引用,有NULL指针。

5.用sizeof计算字节大小时,引用的结果是引用的类型的大小,指针的大小是地址空间的大小。

6.引用+1时是引用的实体加1,指针是向后偏移一个地址的大小。

7.没有多级引用,有多级指针。

四、inline内联函数

用inline修饰的函数叫做内联函数,在C++编译时,内联函数会在调用内联函数的地方展开,不会建立函数栈帧,减少了程序消耗。

1.调用内联函数是用空间换时间的做法,使文件变大,但提高了程序的运行效率。

2.内联函数不可以声明和定义分离,使用inline后,函数没有地址,会有链接错误。

3.内联函数一般只适用于较短的函数,且不是递归频繁调用的函数。如果函数不短,则展开消耗非常大,递归也是,每次递归都展开,消耗非常大。

五、auto关键字

5.1aoto介绍

 auto定义的变量会在编译器编译时自动识别变量的类型,但auto定义的变量必须初始化。

int main()
{
	auto a = 2;
	auto b = 'a';
	auto c = 2.2;
	cout << typeid(a).name() << endl;//c++查看变量类型
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;
	return 0;
}

 5.2aotu使用方法

5.2.1auto定义指针

auto定义指针时可以加上*,也可以不加*,但加*时必须定义指针。

5.2.2auto定义引用

auto定义引用时必须加上&,否则就成了赋值初始化。

int main()
{
	int a = 5;
	auto& b = a;//引用
	auto c = a;//初始化c=5;
	return 0;
}

5.2.3auto同时定义多个变量

使用auto定义多个变量时必须定义相同类型的变量。

1.auto不能作为函数的参数。

2.auto不能定义数组。

六、nullptr(空指针)

在C++中NULL被定义成了0,不再代表空的含义。为了表示空,C++11中引入了关键字nullptr。

其内涵与C语言中的NULL相同。

  • 41
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值