page contents

C++学习笔记1

C++学习笔记1——C到C++11、bool  类型   表示真(true)或假(false),0或1,大小为一个字节   bool  vale;//定义了一个bool 类型的变量vale  这个vale要么是真要么是假   vale=true;//给赋值...

C++学习笔记1——C到C++1

1、bool  类型

  表示真(true)或假(false),0或1,大小为一个字节

  bool  vale;//定义了一个bool 类型的变量vale  这个vale要么是真要么是假

  vale=true;//给赋值为真 或者 1

2、&  引用  取别名   必须要初始化  大小占4个字节

  取别名,就是对一个变量取别名,对一个变量名取别名

  int a=32;

  int &b=a;//那么这个b就是a的别名,可以直接使用b当作这个int类型的变量a来使用 

  b=12;//那么这个a的值就会被改成12

  引用参数,可以达到在函数内部所操作的数据就是函数外部的数据(相当于地址传递)

  引用有大小占4字节,对于传参来说,如果类型比较大,是不是除了指针之外,多了一种选择方式
  指针和引用对于效率来说,没有太多区别

 

指针和引用的区别:
  1、指针是一个有内存的实体,引用只是一个外号
  2、引用是常量,常量必须初始化
  3、指针可以赋空值
  4、指针的内存唯一的,引用不唯一

3、内联函数 

  通过内存膨胀来减少函数的跳转,空间换时间   函数是:时间换空间

  在函数前面加上inline就是内联函数

  inline void fun(){}

  如果出现函数体的代码过长,如果有循环,不建议使用内联

  什么使用内联:简单的赋值语句,简单的返回语句(函数体少,使用频率高)

4、函数重载

构成函数重载 1、函数名一致  2、参数列表位置不同  构成函数重载

参数列表位置不同:对应位置不同,参数个数不同,参数类型不同,和返回值不同没有关系

  int arr(int a,int b){return a+b;}

  void arr(double a,double b){printf("%lf",a+b)}

  这个arr函数构成函数重载

使用重载函数的时候要特别注释类型转换导致二义性的问题

  void a(int a){}

  void a(float){}

  这个函数a构成函数重载如果调用的是a(1.23);这样就会有二义性的问题

  vs会帮助我们把基本数据类型的大类型强制转为小类型

5、函数的缺省参数(也就是形参有初始化的值)

  1、参数的缺省只能由后往前缺省,依次缺省,不能由前往后

void fun(int a,int b=2,int c=3);//可以这样写

void fun(int a,int b=2,int c);//不可以可以这样写


  2、参数的缺省,在只有定义的情况下可以直接写在定义上,如果有声明,只要在声明中缺省,定义不需要

定义:void fun(int a,int b,int c);

声明:void fun(int a,int b=2,int c=3);
  3、缺省参数的过程,如果对应位置不给出实参,就直接用缺省的参数,如果给出实参,会用实参替换掉缺省的参数
  4、参数的缺省如果和重载混合一起使用,一定要注意因为缺省参数导致的二义性

  void fun(int a,int b=10,int c=20){} 这样从第2个形参开始有默认参数了后面的参数就必须要有默认参数
  void fun(int a){} 如果上下有这么两个函数就会在调用(<fun(1)>)下面这个函数的时候出现二义性

 

  • 发表于 2021-05-24 16:16
  • 阅读 ( 759 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小威
小威

64 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章