本文共 716 字,大约阅读时间需要 2 分钟。
5:了解C++默默编写并调用哪些函数
1 当创建空类时,编译器就会为它创建一个copy构造函数、一个copy assignment操作符和一个析构函数
此外,如果没有声明构造函数的话,编译器会为我们生成一个default构造函数
例:
class Empty { };
实际:
class Empty
{
public:
Empty() { ... }
Empty(const Empy& ths) { ... }
~Empty() { ... }
Empty& operator= (const Empty& rhs) { ... }
};
2 当类内含有 const 或者 reference 成员变量时,调用编译器生成的 copy assignment操作符失败,需自定义=操作符
3 当基类的copy assignment 不可调用或者为private时,无法调用子类的copy assignment操作符
6:若不想使用编译器自动生成的函数,就该明确拒绝
讲相应的函数声明成private,并不予实现
Uncopyable 类使用:
class Uncopyable{
protected:
Uncopyable() { }
~Uncopyable() { }
private:
Uncopyable(const Uncopyable&);
Uncopyable& operator=(const Uncopyable&);
};
把类从Uncopyable类继承,由于基类Uncopyable的copy构造和 copy assignment 都为private,迫使子类调用这2个函数不成功,从而达到不能copy 的效果
转载地址:https://blog.csdn.net/johnice/article/details/5513745 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!