暑期C++之 copy构造函数调用时机
来源:互联网 发布:淘宝排除王 编辑:程序博客网 时间:2024/05/17 08:06
拷贝构造函数在构造函数中是一个很重要的部分,很多初学者对于拷贝构造函数的调用时机不太清楚。
今天就把代码贴上来,让大家了解拷贝构造函数调用场景
场景1
#pragma once#include<iostream>using namespace std;class Location1{private:int x, y;public:Location1(int x = 0, int y = 0){this->x = x;this->y = y;cout << "构造函数被调用" << endl;}Location1(const Location1 &obj){cout << "copy" << endl;x = obj.x;y = obj.y;}~Location1(){cout << x << "x" << y << "y" << endl;}int getx() { return x; } int gety() { return y; }};void f1(Location1 p){cout << p.getx() << "x" << p.gety() << "y" << endl;}void playobj1(){Location1 a(1, 2);Location1 b = a;f1(b);//b实参会初始化形参p 会调用copy构造函数}int main04(){playobj1();return 0;}
#pragma once#include<iostream>using namespace std;class Location{private:int x, y;public:Location(int x, int y ){this->x = x;this->y = y;cout << "构造函数被调用" << endl;}Location(int y ){this->x = 100;this->y = y;cout << "一个参数函数被调用" << endl;}Location(const Location &obj){cout << "copy" << endl;x = obj.x;y = obj.y;}~Location(){cout << x << "x" << y << "y" << endl;}int getx() { return x; } int gety() { return y; }};//结论:函数返回值是一个元素 返回的是一个新的元素,所以会调用匿名对象类的拷贝构造函数//匿名对象的 去和留//如果用匿名对象 初始化另外一个同类型对象 匿名对象转变有名对象//如果用匿名对象 赋值给另一个同类型对象 匿名对象立马析构Location g(){Location a(1, 2);return a;//返回一个元素 所以这里会调用拷贝构造函数//用a对象创建一个匿名对象,然后把原来的对象给析构}//void playobj(){g();}void playobj2(){//用匿名对象初始化M 此时匿名对象就变成m 从无名变成有名//提前牺牲内存 来提高运行速度Location m = g();cout << m.getx() << endl;}void playobj3(){Location m2(8);m2 = g();//用匿名对象给其他对象 赋值 所以匿名对象被析构 cout << m2.getx();}int main(){//playobj();//playobj2();playobj3();return 0;}
阅读全文
0 0
- 暑期C++之 copy构造函数调用时机
- copy构造函数的调用时机1和2
- copy构造函数的三种调用时机
- 拷贝构造函数调用时机
- copy构造函数调用时机4,函数返回值是匿名对象
- 暑期C++02之构造函数之调用顺序方法
- C++基础篇之 复制构造函数调用时机
- Android自定义View之构造函数调用时机
- C++之拷贝构造函数的调用时机
- (copy)赋值构造函数的4种调用时机or方法
- copy构造函数调用情况
- 拷贝构造函数调用的时机
- 全局对象构造函数的调用时机
- 拷贝构造函数被调用的时机
- c++拷贝构造函数的调用时机
- c++ 拷贝构造函数调用时机
- 拷贝构造函数被调用的时机
- 调用拷贝构造函数的时机
- 售前项目方案模板
- LeetCode 9. Palindrome Number
- 数据仓库Hive表
- 策略模式
- 第十八周:[Leetcode]111. Minimum Depth of Binary Tree
- 暑期C++之 copy构造函数调用时机
- 漫谈操作系统3 -- 基础知识 (用户态和内核态分离)
- ORA-12514
- 百度地图计算距离
- 点击Android按钮跳转到React-native指定界面
- PB关于字符串按照一定输入格式、规则检测(正则表达式)
- python爬虫step1:selenium
- Docker Ubuntu TLS handshake failed
- Josephus问题的一个C语言程序