effective c++ 第三版 读书笔记2
发布日期:2021-11-13 02:34:58 浏览次数:4 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++ 与 lua 简单交互1 (LUA CAPI)
下一篇:effective c++ 第三版 读书笔记1

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月22日 01时18分03秒