C++随笔(二)障眼法

1.内联函数

  C++的内联函数相当于C中的宏函数,不需要入栈的过程,节省了时间和空间,内联函数将它内联到栈中,而且内联函数要求比较小的函数才可以内联,大的函数编译器也做不到内联,写了也没用

2.隐藏的成员函数的缺省指针(this),每一个成员函数一定有一个this指针,指向当前调用函数的变量的地址,在调试窗口,可以用sizeof(..)的到他的字节数

而在C语言中,并没有this指针,所以,在C中用全局函数代替C++里面的成员函数的时候,全局函数的形参要求用调用者的指针,这样子才可以起到很好的传参的作用,起到改变实参的作用,补充:关于结构体,如果声明的是结构体变量,则在调用结构体中的变量的时候,用.,如果声明是指针,则需要用->      

3.封装,继承和多态

  C++中的封装主要理解的是成员函数的概念

  c++中的继承用:,比如struct ..:..{  .. }

  C++中的多态,主要是虚函数

4,构造函数

  构造函数没有返回值(是没有,而不是void 或者Int)

  int j = 24; 和int j(24);是等价的,在C和C++中都支持结构体struct SSTUDENT = {12,"lisii",'f'};这样子初始化

  而且为了可以使用SSTUDENT(12,"lisii",'f');来定义,引入构造函数,代替了C语言的大括号,对类中的对象属性等进行赋初值

  在C++中,用this->....= ....,而不是this.....=....;不同于java

  在c++中,给数组赋值的时候,要用strcpy(..,..),来赋值

  对于单参数的构造函数还可以用等号来调用构造函数SStud tud = 3;

  int *p = new int(2);在堆内生成int

  执不执行构造函数,由有没有NEW这个来决定,比如

  在前面有一个结构体,定义“

    SStud s;

    SStud s1 = 32;//执行构造函数

    SStud s2(10000,"lala",'f');//执行构造函数

    SStud *p1 = new SStud;//执行构造函数

    SStud *p2 = new SStud(32);//执行构造函数

    SStud *p3 = new SStud(100,"lala",'f');//执行构造函数

    SStud *pl = &s1; //不执行构造函数

  

posted on 2015-04-13 09:46  玲先霞  阅读(149)  评论(0编辑  收藏  举报

导航