空类中自带的六大默认函数,及类中的基础关键字explicit

一.空类中自带的函数有6个,分别是:

class Base {
public: // class默认private权限
  Base () = default; // 默认构造
  ~Base () = default; // 默认析构

  Base (const Base &b)= default; // 默认拷贝
  Base &operator =(const Base &b)= default; // 默认赋值  
  
  Base (Base &&b)= default; // 默认移动拷贝     c++11后加入
  Base &operator =(Base &&b)= default; // 默认移动赋值   c++11后加入                                 
}

二.类型和函数的优化建议

1.使用成员初始化方式对类中成员进行默认值初始化;

  初始化列表先后不代表初始化的顺序初始化顺序由声明的先后决定!

class Myclass {
public:
    int m_a;
    int m_b;
    Myclass (int a,int b): m_b(b),m_a(a){} // 初始化顺序 m_a -》 m_b
}

 

2.如果定义 或者 “=delete” 了任何拷贝、移动、析构函数,请定义 或者 “=delete” 它们全部;

  在函数声明后加入=delete即可将该函数标记为禁止调用,一旦该函数被调用则会导致编译错误。可以将旧版本的函数标记delete。

       在函数声明后面加default,相当于对此函数进行默认的定义

3.采用union用以节省内存;

三.explicit & 初始化列表&默认构造

存在初始化函数的类,都会加“explicit”关键字进行修饰,禁止隐式转换(只能直接显示调用)

 

 

 

 

 

posted @ 2021-12-04 00:13  行路人&  阅读(335)  评论(0编辑  收藏  举报