侧边栏壁纸
博主头像
如此肤浅

但行好事,莫问前程!

  • 累计撰写 52 篇文章
  • 累计创建 6 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

条款05 了解C++默默编写并调用哪些函数

如此肤浅
2022-05-14 / 0 评论 / 0 点赞 / 46 阅读 / 559 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 编译器可以暗自为 class 创建 default 构造函数、copy 构造函数、copy assignment 操作符,以及析构函数。

如果你写了一个空类,编译器就会为它声明一个 copy 构造函数、一个 copy assignment 操作符和一个析构函数。此外如果你没有声明任何构造函数,编译器也会为你声明一个 default 构造函数。所有这些函数都是 public 且 inline。

且,惟有当这些函数被需要(被调用)的时候,它们才会被编译器创建出来。

至于 copy 构造函数和 copy assignment 操作符,编译器创建的版本只是单纯地将来源对象的每一个 non-static 成员变量拷贝到目标对象。

必须自定义拷贝赋值操作符的情况:
① 在一个“内含 reference 成员”的 class 内支持赋值操作( assignment);
② 在“内含 const 成员”的 classe 内支持赋值操作,编译器的反应也一样。因为,更改 const 成员是不合法的;
③ 如果某个 base classes 将拷贝赋值操作符声明为 private,编译器将拒绝为其 derived classes 生成一个拷贝赋值操作符。毕竟编译器为 derived classes 所生的拷贝操作符想象中可以处理 base class 成分(见条款12),但它们当然无法调用 derived class 无权调用的成员函数。

0

评论区