《C++ imooc》笔记

来源:互联网 发布:张家庄隧道 知乎 编辑:程序博客网 时间:2024/06/06 03:39

引用

int a=1;int &b=a;    //引用发生时,必须初始化int* p=&a;int* &p1=p;    //指针类型引用//引用作为函数参数void func(int *a, int *b){    int c=*a;    *a=*b;    *b=c;}func(&a,&b);void func(int &a, int &b){    int c=a;    b=a;    a=b;}func(a,b)

const定义常量

const int x=3; x=5;    //错误int x=3; const int y=x; y=5;    //错误int x=3; const int *p=&x; *p=5;    //错误int x=3,y=4; int * const p=&x; p=&y;    //错误const int x=3; const int &y=x; y=5;    //错误,int &y=x会报错,因为x是const,故其别名必须是constconst int x=3; int *p=&x;     //报错,通过一个可变的指针指向一个不可变的int,故报错int x=3; const int *p=&x; x=5;    //*p=5

函数默认值
建议,在函数声明时使用默认值,在函数定义时不使用默认值。

void func(int a, int b=10);void func(int a, int b){    ...

函数重载
在相同作用域内,同一函数名定义多个函数,但参数个数和参数类型不同。
getMax(int x, int y) 经过编译形成新的函数名getMax_int_int,以此区分同名函数getMax(double x, double y)。
内联函数
编译时用函数体代码和实参代替函数调用语句,关键字inline,inline int getMax(int x, int y)
内联编译时建议性的,即使使用inline,但是否使用内联有编译器决定。
逻辑简单(没有for,while等循环),频繁调用的函数建议使用内联。
递归函数不能使用内联。
内存申请int *p=new int;,释放delete p;.
块内存的申请int *p=new int[10],释放delete []p;p=NULL.注意指针类型多一个p=NULL;操作。
C语言的内存管理方式,申请void *malloc(size_t, size);,释放void free(void *memblock);

原创粉丝点击