调用拷贝构造函数的时机
来源:互联网 发布:steam数据扫号 编辑:程序博客网 时间:2024/05/17 07:35
调用拷贝构造函数的情形
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);
#include<iostream>using namespace std;class Position{private:int x;int y;public:Position(){}Position(int x, int y) :x(x), y(y){cout << "Position(int x, int y), x = " << x << ", y = "<< y << endl;}~Position(){cout << "~Position(), x = " << x << ", y = " << y << endl;}Position(const Position&p){cout << "Position(const Position&p)" << endl;this->x = p.x;this->y = p.y;}Position & operator=(const Position&p){cout << "Position & operator=(const Position&p)" << endl;this->x = p.x;this->y = p.y;return *this;}};Position testCopyFunction(){Position p(1, 2);//调用构造函数return p;//返回调用拷贝构造函数把局部对象p复制给一个内存中分配的临时的匿名对象上作为函数的返回值//函数结束后释放p的内存,调用析构函数//场景4}int main(int argc, char* argv[]){Position p;p = testCopyFunction();//调用拷贝构造操作符完成复制//完成赋值后,临时变量的使命就完成了,调用析构函数释放临时变量的内存Position p1 = p;//场景一:Position p2(p1);//场景二://场景三是传参:略Position(101, 102);//调用完构造函数后立马调用析构函数Position p3 = Position(3,4);//相当于 Position p3(3,4)return 0;}
运行结果:
Position(int x, int y)
Position(const Position&p)
~Position()
Position & operator=(const Position&p)
~Position()
//----------------------------------
Position(const Position&p)
Position(const Position&p)
~Position()
~Position()
~Position()
0 0
- 拷贝构造函数调用的时机
- 拷贝构造函数被调用的时机
- c++拷贝构造函数的调用时机
- 拷贝构造函数被调用的时机
- 调用拷贝构造函数的时机
- 拷贝构造函数被调用的时机
- 拷贝构造函数被调用的时机
- 拷贝构造函数的调用时机
- 拷贝构造函数调用时机
- 拷贝构造的调用时机
- C++之拷贝构造函数的调用时机
- c++ 拷贝构造函数调用时机
- 拷贝构造函数调用时机3
- 拷贝构造函数3.调用时机
- 拷贝构造函数的调用时机1,2 对象初始化时机
- C++拷贝构造函数 调用时机 -- 深浅拷贝
- 构造函数,拷贝构造函数,赋值操作符的调用时机
- 拷贝构造函数的使用时机
- 无缝滚动原理与具体实现
- ostringstream的用法
- 查找最大元素
- mfc 直接操作ie浏览器自动填写表单实例
- Java中常用的集合类和Map详解
- 调用拷贝构造函数的时机
- 设置外键约束的SQL语句:
- postgreSQL角色权限控制
- 125、Valid Palindrome
- RCSwitch 315M无线通讯
- Linux基本命令
- 在线图标字体生成器
- 陈皓:fork的面试题
- C - 限时代码