Item5 了解C++默默编写并调用了哪些函数

如果自己不声明, 编译器就会暗自为class创建一个default构造函数、一个copy构造函数、一个copy assignment操作符(代码合法有意义时编译器才会生成),以及一个析构函数

class Empty { };

对应地有

class Empty {
public:
    Empty(){...}
    Empty(const Empty& rhs) {...}
    ~Empty(){...}

    Empty& operator=(const Empty& rhs) {...}
    
};

注:

  • 只有当这些函数被调用的时候,编译器才创建。
  • 若已经声明了对应的函数,编译器不再创建default函数。

内含引用成员或const成员的类,如需支持赋值操作,需自定义赋值操作符。

如基类将赋值操作声明为private,编译器拒绝为其子类生成赋值运算函数。

猜你喜欢

转载自blog.csdn.net/u013015629/article/details/107420149