第1节课:bool、引用、内联函数、函数重载、函数参数缺省

本文详细介绍了C++中的基本数据类型bool,包括其特性、定义与使用。接着讨论了内联函数的概念,解释了如何通过内联方式减少函数调用的开销。引用作为变量的别名,其特点和与指针的区别也进行了对比。此外,详细阐述了函数重载的原理和应用,以及函数参数缺省的使用注意事项,包括可能出现的二义性问题。
摘要由CSDN通过智能技术生成

第1节课:bool、引用、内联函数、函数重载、函数参数缺省

一、bool

1.知识点的介绍:

1.bool是一种数据类型

2.bool类型的变量的值只能够为true或者是false

3.内存:一个字节的大小

4.注意:只有1为true其他取值都为0(false)

也就是说:遵循的原则:非零即真

2.定义:

bool isTrue = true;
bool istrue1 = false;
bool istrue2 = 2;//istrue == false;
bool istrue3 = 1;//istrue == true;
bool istrue4 = 0;//istrue == false;

二、内联函数

1.知识点:

1.内联函数指函数通过内存膨胀来(代码区的空间变多)减少函数调用的开销,以空间换取时间

2.内联函数不同于宏定义,宏定义是在预处理阶段,进行的一些替换的工作,而内联函数则是在程序执行到要调用内联函数的时候,将内联函数的代码替换到调用的地方

3.内存膨胀:代码区内存变多,函数调用时和普通函数相比,就不用申请栈区内存来运行函数,减少了函数出栈入栈的时间

2.定义:

inline int Myadd(int a, int b)
{
    return a + b;
}

3.使用:

1.函数体内容不能过多,不能有循环;

2.简单的一句赋值语句或者是return语句,而且调用频率比较高都可以用内联函数

3.通过膨胀代码区的空间来减少调用函数的跳转,减少时间开销

4.也是函数,和普通函数的调用一样

4.review:

内存四区:全局变量区,代码区,栈区,堆区

三、引用

1.知识点:

引用就是给一个以及定义好的变量或者是对象取别名

2.定义:

int a;
int &typename_a = a;//引用定义时候必须要初始化  ,   给a取别名typename_a

3.使用:

1.必须先定义好变量才可以取别名

(给一个人去外号的前提是这个人得存在)

2.定义引用的时候必须初始化

(取外号你得指明这个外号是给谁取的)

3.引用和原变量是同一内存,也就是说不会给定义引用不会开辟内存

(给rose取了一个外号肉肉,肉肉和rose是同一个人,不是说肉肉是rose复制品,如果是这样的话,那都可以娶rose当老婆了)

4.对引用的操作就相当于与对原变量的操作

(你亲肉肉一下就相当于亲了rose本人一下)

5.引用的类型必须和原变量的类型必须一样

4.指针和引用的区别:

1.效率差不多,但是定义一个指针会开辟四字节的空间,而引用和原变量是同一内存

2.引用在定义的时候必须初始化,而指针无所谓;

3.引用是直接访问,指针是间接访问

4.指针有多级指针,引用没有

5.review:

C语言中定义一个变量就会给它分配空间,即使没有初始化也会给它分配空间

四、函数重载

1.知识点:

两个或者以上的函数可以函数名相同,满足一定的条件它们构成重载;

构成重载的条件:参数列表不同

(1)参数的个数不一样

(2)参数的类型不一样

2.定义:

void fun(int a, int b);
void fun(int a);
void fun(float a);

//返回值类型不同不构成重载
void fun(int a);
int fun(int a);

3.使用:

1.根据传递的参数确定调用哪个重载函数

2.缺省值必须是常量

3.如果一个函数只有定义,那么在定义出要指明缺省,如果有声明则在声明出指出,定义处不用

4.函数重载调用时产生的二义性:

int fun(int a){return a;}
int fun(float a){return a;}
int main()
{
    fun(2.3);//2.3系统默认是double类型,所以不知道要调用哪个函数
    //1.编译器会将其按照内存最小的类型转在调用
    //2.用户进行类型强转
    fun((int)2.3);
    return 0;
}

五、函数参数缺省

1.知识点:

顾名思义,参数列表中的参数赋值默认值

2.定义:

void fun(int a, int b = 0);
void fun(int a = 1, int b);//这种缺省有问题,会产生二义性

3.使用:

1.只能从后面往前面缺省,不然会出现二义性;

2.参数列表有两个参数,缺省一个,则调用时候,可以传一个参数(另一个参数为默认值),也可以传两个参数(两个参数的值都是传进来的值)

4.函数重载和函数参数缺省造成的二义性:

int fun(int a, int b = 0);
int fun(int a);
fun(1);//出现二义性
//到底调用哪个呢??

//解决方法:
1.只能够传两个参数进去

2.去掉其中一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值