C++ 类的成员函数

六个特殊的成员函数

  • 构造函数

    尽可能使用列表初始化constructor():...{}
    why?:列表初始化调用的是复制构造函数,对大多数类型复制构造比构造快;对fundamental-types两者一样快

  • 析构函数

    记得使用虚函数(要做基类而且要实现多态的话),以防止调用基类析构函数不完全析构导致的内存泄漏(换句话说当有有虚函数时定义析构函数为虚函数)
    同理,不要试图继承没有虚析构函数的类
    remark1:使用虚函数会使指向实例的指针带有虚指针(vptr)[用于存储类型],导致指针大小增加50~100%,此时若向其它语言的程序传输指针(如C)会出问题,需要停用虚函数(因为vptr不能和指针分割)
    remark2:纯虚析构函数需要给出定义,不然链接器直接开摆(派生类析构函数会调用基类析构函数)

  • 复制构造函数
  • 复制运算符
  • 移动构造函数
  • 移动赋值运算符

  • 若定义了移动构造函数和移动赋值运算符,则不会提供默认复制构造函数和复制运算符,反之同理; 使用default让编译器帮你生成默认函数(能偷懒为什么不呢)
  • 禁用复制||移动构造函数(运算符):声明但不定义为private或使用delet关键字
  • 重载操作符记得返回this指针
  • operator=需要考虑自己等于自己的情况,具体情况具体写法
posted @ 2022-05-05 12:59  Uint44_t  阅读(43)  评论(0)    收藏  举报