C++...

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);//错误

提高程序的可扩充性。