【心得】面向对象_1

构造函数

  • 类自带两种构造函数:拷贝构造函数与无参构造函数。
  • 类有3种构造函数:一般构造函数,复制构造函数,转换构造函数。
  • 自己写的任何一个构造函数都会让类自带的对应种类的构造函数失效。
  • 构造函数的其他写法:Base(int a, int b) :age(a), name(b) {};
  • 构造函数的调用方法:
    • 基础方法
      • Base one(...,...,...)
      • Base one=new Base(...,...,...)
    • 无参构造函数:Base(){};
      • Base one
    • 转换构造函数:Base(int a){};
      • Base one = 1
    • 鬼畜的转换构造函数:Base(int a,int b){};
      • Base one = {1,2}; ???不是很能理解为什么可以这么写???
    • 不能是转换构造函数的一般构造函数:explicit Base(int a){};
  • 默认的拷贝构造函数是浅拷贝,就是说把函数的指针指向要拷贝的类的内存。
  • 继承中的构造函数 TODO

析构函数

  • 虚析构函数 :
    • 当父类的析构函数不声明成虚析构函数的时候,当子类继承父类,父类的指针指向子类时,delete掉父类的指针,只调动父类的析构函数,而不调动子类的析构函数。
    • 当父类的析构函数声明成虚析构函数的时候,当子类继承父类,父类的指针指向子类时,delete掉父类的指针,先调动子类的析构函数,再调动父类的析构函数。
  • 继承中的析构函数 TODO

staic

  • 所有的静态变量都等于一个全局变量。
  • 静态变量的生存周期为整个程序。
  • 静态局部变量的和普通局部变量一个,只能在那个局部被调用。
  • 静态全局变量只能在同一个文件内被调用。(可以避免不同文件的相同变量的链接错误)
  • 类静态成员变量只能在类外初始化。
  • 类静态成员变量对于所有的类只有一份。
  • 类静态成员函数只能调用类里的静态变量。

猜你喜欢

转载自www.cnblogs.com/jhy16193335/p/9162134.html