c++的引用
概念:
1.对变量取别名,不分配空间,引用长度等于其引用对象的长度。
2.相当于常指针,在定义时必须初始化。
引用作返回值:
1.可以用普通变量去接收引用返回值
2.用一个引用去接收引用返回值
3.做左值使用。
指针引用:
指针引用做形参去接收一个指针,在函数开辟的新的栈帧对实参指针取别名。
函数调用结束时释放指针引用,而不影响指针本身。
常引用:
int a = 1;
const int &b = a;//不能通过引用去修改a的值。
内联函数
概念:
在函数调用处内嵌函数体的函数
意义:
节省了函数调用时在新的栈帧处入栈和出栈的操作
特点:
1.不能存在循环语句
2.不能存在条件判断语句
3.函数体不能过大
4.不能对函数体取地址(没有开辟新的栈帧,没有函数入口地址)
5.内联函数声明必须在调用之前
总结:内联函数省去了函数调用时入栈,出栈的等开销 , 所以当函数体的开销远大于函数的入栈,出栈,跳转 等开销时,内联函数就变得没有意义。
函数重载
概念:使用同一函数名,实现一类函数功能。
重载条件:
1.函数名相同
2.函数的参数,类型, 个数,顺序不同
3.和返回值类型无关。
重载的二义性:
设定默认参数产生。
c++动态内存分配
malloc与new区别:
1. 存储位置不同,new在自由储存区,自由存储是C++中通过new与delete动态分配和释放对象的抽象概念。自由存储区不仅可以是堆,还可以是静态存储区
2.new不需要手动计算创建字节
3.new返回对象类型指针
4.new在分配空间时调用构造函数
5.new内部封装了malloc,实际也是通过malloc分配空间
6.new分配空间失败返回bad_alloc异常,malloc返回NULL
7.new是运算符,malloc是c函数
8.new分配空间可以初始化。
类和对象
优点:
1.封装:结构清晰,标志化,规范化,可读性强
2.继承:易于扩展,改动小。
3.多态:依赖于抽象,具体的实现了统一的接口。
缺点:
相比c语言运行效率下级。
类的访问权限
public:公有属性,类内与类外都可以访问
protected:保护属性,在继承关系中,子类可以访问
private:只能在类的内部访问