拷贝构造函数在哪些地方用,函数参数,函数返回值
来源:互联网 发布:淘宝纠纷处理措施 编辑:程序博客网 时间:2024/05/29 03:25
首先看个程序。
#include <iostream>using namespace std;class A{public:A(){cout << "A"<<endl;}~A(){cout << "~A"<<endl;}private:int x;};void main(){A a;A b(a);A c(a);}
输出结果是:
A
~A
~A
~A
请按任意键继续. . .
=================================================
关于函数参数和函数返回值的构造问题。
函数参数和返回值的构造都是调用的拷贝构造函数。
并且在函数返回时都需要析构。
#include <iostream>using namespace std;class A{public:A(){cout << "A" <<endl;}~A(){cout << "~A" <<endl;}private:string x,y;};class B : public A{public:B(){cout << "B" <<endl;}~B(){cout << "~B" <<endl;}private:string x1,y1;};B fun(B b){return b;}void main(){B a,b;b = fun(a);}
输出结果:
A
B
A
B
~B
~A
~B
~A
~B
~A
~B
~A
请按任意键继续. . .
当把函数调用注释掉后,输出结果是:
A
B
A
B
~B
~A
~B
~A
请按任意键继续. . .
可见相比fun函数的调用,只是多了两次析构函数的调用而已。
#include <iostream>using namespace std;class A{public:A(){cout << "A" <<endl;}A(const A &a){cout << "construct A" <<endl;}~A(){cout << "~A" <<endl;}private:string x,y;};class B : public A{public:B(){cout << "B" <<endl;}B(const B &a){cout << "construct B" <<endl;}~B(){cout << "~B" <<endl;}private:string x1,y1;};B fun(B b){return b;}void main(){B a,b;b = fun(a);}
PS:调用拷贝构造函数之前会自动调用父类的构造函数
A
B
A
B
A
construct B
A
construct B
~B
~A
~B
~A
~B
~A
~B
~A
请按任意键继续. . .
//多余调用的两次析构函数。是函数参数和返回值的析构。
//而函数参数和返回值都是拷贝构造函数完成构造的。
//参考文献:
//http://www.cnblogs.com/renyuan/archive/2012/12/29/2839230.html
- 拷贝构造函数在哪些地方用,函数参数,函数返回值
- 拷贝构造函数 参数传递 返回值
- C++函数参数,返回值,拷贝构造函数等
- 对象作为参数和返回值 复制(拷贝)构造函数
- 构造函数、拷贝构造函数
- 拷贝构造函数,构造函数
- 构造函数 返回值
- 返回值为对象调用拷贝构造函数
- 类的拷贝构造函数的参数
- 拷贝构造函数及其参数类型
- 拷贝构造函数及其参数类型
- 拷贝构造函数及其参数类型
- 拷贝构造函数及其参数类型
- 拷贝构造函数及其参数类型
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 拷贝构造函数--默认拷贝构造函数
- 函数返回类的对象与拷贝构造函数
- 为什么C++中的拷贝构造函数参数不能值传递
- Google map离线API实现离线地图
- PHP实现文件上传功能
- OpenCV学习笔记(七)——图像处理之滤波器ImgProc
- PHP_ThinkPHP使用phpExcel实现Excel数据的导出
- 《格蠹汇编》-第1章笔记
- 拷贝构造函数在哪些地方用,函数参数,函数返回值
- Fibonacci数列的两种求法
- ThinkPHP使用phpExcel实现Excel数据的导入导出
- IT,挨踢?走在十字路口的大学IT民工党
- 扩展kmp 模板
- MFE常用数据结构之Lattice
- spring(2.5或者3.2)集成hibernate3.5的配置文件
- JavaScript: The Definitive Guide 权威指南,读书笔记(一)
- 关于设置controller的背景色