析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>
2013-11-12 20:29
363 查看
通过下面primer中的一道习题,可以更深刻的了解,析构函数,复制构造函数,赋值操作符重载,默认构造函数的使用。
但是我的结果与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(3); //调用默认构造函数创建对象 //调用赋值构造函数将临时对象复制到每个元素 //调用析构函数撤销 //重复三次 cout<<"--------------------7----------------"<<endl; delete b; //调用析构,撤销p cout<<"--------------------8----------------"<<endl; system("pause"); }
执行结果如下:
相关文章推荐
- 深度解析-->c++中构造函数,拷贝构造,赋值运算符重载,析构函数的调用情况
- 一段代码引起的对C++构造函数、析构函数,复制构造函数,运算符重载的深度理解
- c++ 构造函数,析构函数,复制构造函数
- 编译器不会自动生成调用基类复制构造函数的代码
- 构造函数与析构函数的执行顺序 例子代码
- 实例解说构造函数 复制构造函数 赋值运算符 析构函数
- 3D 激光SLAM ->loam_velodyne论文与代码解析Lidar Odometry and Mapping
- 写一个类的构造函数、复制构造函数、析构函数、赋值函数
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 继承中构造函数和继承中的析构函数解析
- 构造函数 复制构造函数 类型转换构造函数 析构函数
- String的构造函数,析构函数,复制构造函数,赋值运算符
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 【零起点学通C++】构造函数与默认构造函数的代码及析构函数的相关笔记
- 字符串类的实现:构造函数、析构函数、复制构造函数和赋值操作符
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 深入解析C++中的构造函数和析构函数
- 继承和动态内存分配——需要为继承类定义 显式析构函数、复制构造函数和赋值运算符