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

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

文章目录

  • 第1节课:bool、引用、内联函数、函数重载、函数参数缺省
    • 一、bool
      • 1.知识点的介绍:
      • 2.定义:
    • 二、内联函数
      • 1.知识点:
      • 2.定义:
      • 3.使用:
      • 4.review:
    • 三、引用
      • 1.知识点:
      • 2.定义:
      • 3.使用:
      • 4.指针和引用的区别:
      • 5.review:
    • 四、函数重载
      • 1.知识点:
      • 2.定义:
      • 3.使用:
      • 4.函数重载调用时产生的二义性:
    • 五、函数参数缺省
      • 1.知识点:
      • 2.定义:
      • 3.使用:
      • 4.函数重载和函数参数缺省造成的二义性:

一、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.去掉其中一个

你可能感兴趣的:(c++,c语言,c++,c#)