1,引用问题:
左值引用,右值引用...
2,动态内存分配:
c++:使用new运算符
1),分配一个变量;
p=new T;
T是任意类型名,p是类型为T*的指针。
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给p
int *pn;
pn=new int;
*pn=5;//向new 出来的空间写入了5
2),分配一个数组;
T:任意类型名
P:类型为T*的指针
N:要分配的数组的元素个数,可以是整型表达式
动态分配出一片大小为N*sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给p。
int *pn;
int i=5;
pn=new int[i*20];
pn[0]=20;
pn[99]=30;
注*:new运算符返回值类型;
new T;
new T[n];
返回值类型都是T*
int *p=new int;
3),用“new”动态分配的内存空间,一定要用“delete”运算符进行释放
delete指针;//该指针必须指向new出来的空间;
int *p=new int;
*p=5;
delete p;
一片空间不能被连续两次删除;
数组“[]”;
delete[]指针://该指针必须指向new出来的空间;
int *p=new int[20];
p[0]=1;
delete[]p;//避免垃圾太多,删除,
3,内联函数,重载函数,函数参数缺省值:
1),内联函数(inline)
函数调用有时间开销。为了减少函数调用的开销,引入内联函数机制。
使用内联函数时,将整个函数代码插入到调用语句处,而不会产生调用函数的语句。
在函数定义前边加“inline”关键字,即可定义内联函数
inline int max(int a,int b);
2),函数重载
一个或多个函数,名字相同,然而参数个数或参数类型不相同,这叫函数重载。
一下三个函数是重载关系:
int max(double a,double b) { }
int max(int n1,int n2) { }
int max(int n1,int n2,int n3) { }
简化了函数命名;
注意不能有二义性;
3),函数的缺省参数
c++中,定义函数时,可以让最右边的连续若干个参数有缺省值,那么调用函数时,若相应位置不写参数,参数就是缺省值。
void fun(int x,int y=2,int z=3){ }
fun(10);//==fun(10,2,3)
fun(10, ,8);//错误
提高程序的可扩充性。