让我们来分析下面这段代码:

#include <iostream>
#include <string>
using namespace std;class Employee {private:static int sn;public:Employee() {cout << "Employee()" << endl;mysn = sn++;}Employee(const string &s) {cout << "Employee(const string &s)" << endl;name = s;mysn = sn++;}Employee (Employee &e) {cout << "Employee (Employee &e)" << endl;name = e.name;mysn = sn++;}Employee &operator=(Employee &rhs) {cout << "Employee &operator=(Employee &rhs)" << endl;name = rhs.name;return *this;}const string &get_name() {return name;}int get_mysn() {return mysn;}private:string name;int mysn;
};int Employee::sn = 0;void f(Employee &s) {cout << s.get_name() << " " << s.get_mysn() << endl;
}int main() {Employee a("赵"), b = a, c;c = b;Employee d = c;Employee e;e = c;f(a);f(b);f(c);f(d);f(e);return 0;
}

测试结果:

  1. Employee(“赵”):调用了Employee(const string &s)

  2. Employee b = a 调用了Employee (Employee &e),可以看成Employee b(a),如果我们将Employee b = a改成:Employee b(a);也是调用Employee (Employee &e)

  3. Employee c 调用了Employee()

  4. c = b;调用了Employee &operator=(Employee &rhs)

  5. Employee d = c;调用了Employee (Employee &e),可以看成Employee d( c ),如果我们将Employee d = c改成Employee d( c ),也是调用Employee (Employee &e)

  6. Employee e;调用了Employee()

  7. e = c;调用了Employee &operator=(Employee &rhs)

如有错误,请在评论区留言指正一下,谢谢 !!!

C++拷贝构造函数调用时机分析相关推荐

  1. C++拷贝构造函数调用时机

    C++拷贝构造函数调用时机 C++中拷贝构造函数调用时机通常有三种情况 示例 C++中拷贝构造函数调用时机通常有三种情况 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值 ...

  2. C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042

  3. 类和对象—对象特性—拷贝构造函数调用时期

    C++中拷贝构造函数通常有三种情况 使用一个已经建立完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 #include <iostream> using na ...

  4. C++ 拷贝构造函数与赋值构造函数调用时机初步01

    #include <iostream> #include <string> using namespace std; class Person { public:char *m ...

  5. C++ 子类的拷贝构造函数调用其父类的拷贝构造函数

    一个经常发生的和继承有关的类似问题是在实现派生类的拷贝构造函数时.看看下面这个构造函数: www.huaqiangu6.com class base { public: base(int initia ...

  6. c/c++教程 - 2.4.2.3~4 拷贝构造函数的调用时机,构造函数调用规则

    目录 4.2.3 拷贝构造函数的调用时机 4.2.4 构造函数调用规则 相关教程 4.2.3 拷贝构造函数的调用时机 C++中拷贝构造函数调用时机,通常有三种情况: 使用一个已经创建完毕的对象来初始化 ...

  7. vector的push_back拷贝构造和空间占用分析

    本文同步自:http://zohead.com/archives/vector-push-back-space-copy/ 这两天在实际程序中使用 STL 的 vector push_back 类对象 ...

  8. c++ vector拷贝构造_vector------stl学习笔记一

    vector其中一个特点:内存空间只会增长,不会减小 援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储. 设想一下,当vecto ...

  9. C++ vector向量pushback拷贝构造需要注意的几点

    vector 在 push_back 时的调用类对象的拷贝构造函数和析构函数有点特别,简单做下分析. 程序代码: #include <iostream> #include <vect ...

最新文章

  1. 用79种语言说爱琪琪格
  2. c++中函数模板的显示具体化
  3. response的运行过程
  4. win10下安装node
  5. 轨道病害视觉检测:背景、方法与趋势
  6. DevOps冲击下的软件测试
  7. 服务器提交任务和直接运行,实现简单服务器学习多线程与Executor
  8. 2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?
  9. shell脚本积累(不断更新)
  10. 烟道机器人_力荐顺义区清洗烟道价格多少钱值得信赖
  11. ask调制流程图_ASK调制及解调实验报告 - 范文中心
  12. ADS仿真设计AB类射频功率放大器
  13. 使用VUE脚手架搭建VUE项目
  14. 优酷kux视频文件转换成mp4格式
  15. Mac下Aria2加速各种网盘下载,你值得拥有!
  16. 七夕情人节表白网页制作【雪花爱心】
  17. Node开发后台API接口项目
  18. winedt配制miktex路径设置
  19. AI发展的桎梏在于理解能力?大咖开出的十一条建议「AI前沿」
  20. word字号选项设置为中文字号

热门文章

  1. C#(Sharp)操作数据库原理及案例精析(强烈建议收藏)
  2. C语言试题八十之统计单词个数
  3. Android之实现多桌面图标app入口进入不同的页面,像2个独立运行的app一样,互不干扰。
  4. Android之实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果
  5. php表格怎么合并单元格格式化,table标签的结构与合并单元格的实现方法
  6. 谷歌不支持调用摄像头麦克风_谷歌发布安卓11系统:全新界面、更严的隐私管理...
  7. Hadoop完全分子式环境搭建—问题及解决办法
  8. 三年租男友回家竟花了10万......
  9. 女朋友当众甩了我一巴掌,我扑上去......
  10. 10岁高分考上大学,16岁读博的95后神童张炘炀,活成了他想要的样子吗?