C++学习记录 2

六 C++的布尔类型(bool)
1 bool类型是c++中基本类型,专门表示逻辑值:true/false
2 bool类型在内存占一个字节:1表示true, 0表示false
3 bool类型的变量可以接收任意类型表达式的结果,其值非零则为真,为零则为假
七 操作符别名// 了解

八 C++的函数
1 函数重载
1)定义
在相同作用域中,定义的同名函数,但是他们的参数必须要有所区分,这样的多个函数构成重载关系
注:函数重载和返回类型无关
通过函数调用重载关系的函数时,根据函数指针的类型决定其匹配的重载版本
2)函数重载的匹配
调用重载关系的函数时,编译器会根据实参和形参匹配程度自动选择最优的版本
当前g++编译器匹配的一般规则:
完全匹配 >=常量转换>升级转换>降级转换>省略号匹配
char -> const char
3)函数重载原理
C++编译器是通过对函数进行换名,将参数表的类型信息整合到新的名字中,解决函数重载和名字冲突的矛盾
笔试题 extern“C”作用?
在C++的函数声明前面加入extern“C”声明,要求C++的编译器不对函数进行换名,便于C程序直接调用该函数
注: 被extern “C”声明的函数不能重载

2 哑元参数
1)定义
定义函数时,只有类型而没有变量名的形参称为哑元
Eg :
Void func(int /哑元/) {…}
2)使用哑元的场景
操作符重载,区分前后++/–
为了兼容旧代码
3)缺省参数(默认实参)
Eg: socket(AF_INET,TYPE,0);
缺省参数必须靠右,如果函数的一个参数有缺省值,那么该函数右侧的所有参数都必须带有缺省值
如果函数的定义和声明分开,缺省参数应该写在函数的声明部分,而定义部分不要再写
4 内联函数(inline)
1)定义
使用inline关键字修饰的函数,表示这个函数是内联函数,编译器将尝试进行内联优化,可以避免函数调用开销,提高代码执行效率
2)使用说明
多次调用小而简单的函数适合内联
调用次数极少或者大而复杂不适合内联
递归函数不适合内联
虚函数不适合内联
注:内联是一种建议而不是强制要求,一个函数能否内联主要取决编译器,有些函数不加inline修饰也会被默认处理为内联,有些函数即便加了Inline也会被编译器忽略

九 动态内存管理
1 回顾C中动态内存管理
1)分配:malloc()/calloc()/realloc()/brk()/sbrk()
2)释放:free()

2 C++中new/delete操作符实现动态内存管理
1)分配: new、new[ ]
2)释放:delete、delete [ ]
eg:动态分配内存保存一个整形数
int* pi = (int*)malloc(4)
pi = 123;
free(pi);
int
pi = new int ;
*pi =123;
delete pi;

十 C++的引用
1 定义
1)引用即别名,就是某个变量别名,对应引用的操作和对该变量本身完全相同
2)语法
类型 & 引用名 = 变量名;
注:引用在定义时必须要初始化,初始化以后所绑定的目标变量不能再修改
注:引用类型和绑定的变量类型要一致
eg:
int a =100;
int& b=a; //b就是a别名
b++;
cout << a <<endl; //101
Int c =200;
b = c; //仅是赋值操作

2 常引用
1)定义引用时加const修饰,即为常引用,不能通过常引用修改引用的目标变量。
const 类型 & 引用名 = 变量名;
类型 const & 引用名 = 变量名;
2)普通引用也可以称为左值引用,只能引用左值,而常引用也可以称为万能引用,既能引用左值也能引用右值
3)关于左值和右值
左值(lvalue):可以放在赋值操作符的左侧,可以被修改
普通变量都是左值
赋值表达式结果都是左值
前++ – 表达式结果都是左值

右值(rvalue):只能放在赋值操作符的右侧,不能被修改
常量都是右值
很多表达式结果是临时变量,临时变量都是右值
一般函数返回的数据,也是临时变量,也是右值
后++ – 表达式结果是自增减之前值,也是临时变量,也是右值
int i = 10;
i = 20;

a+b 表达式的结果会保存到临时变量中,临时变量是系统分配的,都是右值
int & r2 = a+b; // 错误
const int &r2 a+b;
cout << r2 <<endl; //8

char c = ‘a’ ;
首先将字符c转换为int,转换结果保存到临时变量,临时变量都是右值
int& r3 = c ; //错误
const int& r3 = c;

return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值