通过下面primer中的一道习题,可以更深刻的了解,析构函数,复制构造函数,赋值操作符重载,默认构造函数的使用。

但是我的结果与primer习题解答里面的并不相同,可能是编译器不同的原因导致。

// test1107.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std; struct Exam{
Exam(){ cout<<"Exam()"<<endl;} //默认构造函数
Exam(const Exam&){ cout<<"Exam(const Exam&)"<<endl;} //复制构造函数
Exam& operator= (const Exam&){ cout<<"Exam& operator"<<endl;return *this;} //赋值操作符
~Exam(){ cout<<"~Exam()"<<endl;}//析构函数
}; void func1(Exam a){}//形参为 exam的对象
void func2(Exam& b){}//形参为 exam的引用
Exam func3(){Exam obj;return obj;} //返回exam的对象 int main(){
cout<<"--------------------1----------------"<<endl;
Exam a; //调用默认的构造函数创建对象a
cout<<"--------------------2----------------"<<endl;
func1(a);// 调用复制构造函数,创建副本传递实参,撤销副本
cout<<"--------------------3----------------"<<endl;
func2(a); //形参为引用,无需传递实参
cout<<"--------------------4----------------"<<endl;
a = func3(); //调用默认构造函数创建局部对象,
//用复制构造函数返回对象副本
//调用析构函数撤销局部对象
//调用赋值函数赋值
//调用析构函数撤销副本
cout<<"--------------------5----------------"<<endl;
Exam *b = new Exam(); //调用默认构造函数创建对象
cout<<"--------------------6----------------"<<endl;
vector<Exam> exec(); //调用默认构造函数创建对象
//调用赋值构造函数将临时对象复制到每个元素
//调用析构函数撤销 //重复三次
cout<<"--------------------7----------------"<<endl;
delete b; //调用析构,撤销p
cout<<"--------------------8----------------"<<endl;
system("pause");
}

执行结果如下:

最新文章

  1. jsp还是html+ajax
  2. char与TCHAR相互转化
  3. SVG 2D入门5 - 颜色的表示
  4. (转)C# Base64
  5. WEB前端介绍
  6. zoj 3620 Escape Time II
  7. js上拉加载、下拉刷新的插件
  8. Linux调试工具strace和gdb常用命令小结
  9. java.sql.SQLException: Value &#39;0000-00-00 00:00:00&#39; can not be represented as java.sql.Timestamp
  10. ImageAnimator类方法(动画设计)
  11. mysql mariadb 删除表中的数据时数据库变大
  12. 写一个python脚本监控在linux中的进程
  13. Appium环境搭建——安卓模拟器(AVD)调试 1-创建模拟器失败点的总结
  14. 磁盘测试工具FIO工具安装和使用方法
  15. WPF 实现阴影效果
  16. java web项目答辩答辩题总结(书本网上语言答辩+自己的语言答辩)
  17. Python基础(字符串和编码)
  18. centos7用xshell可以连接, xftp连接失败!(墙裂推荐)
  19. SQL Fundamentals || Single-Row Functions || 通用函数 General function || (NVL,NVL2,NULLIF,DECODE,CASE,COALESCE)
  20. 为smokeping添加日志开启debug

热门文章

  1. java代码排序问题
  2. MongoTemplate聚合操作
  3. ZOJ 4016 Mergeable Stack(栈的数组实现)
  4. python学习笔记(一):python简介和入门
  5. CentOS 7.2 部署Rsync + Lsyncd服务实现文件实时同步/备份 (一)
  6. import javax.servlet 出错(真的很管用)
  7. 用JS写一个简单的程序,算出100中7的倍数的最大值
  8. 我的第一个Socket程序-SuperSocket使用入门(一)
  9. Enumeration与Iterator的对比
  10. Android Notification通知