拷贝构造函数调用次数 和 临时变量 【转自百度知道】

2024-05-09 23:58

本文主要是介绍拷贝构造函数调用次数 和 临时变量 【转自百度知道】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源代码如下

#include<iostream>

using namespace std;

class T

{

public:

T()

{

cout<<"Constructor called"<<endl;

i=0;

}

T(const T& t)

{

cout<<"Copy called"<<endl;

}

~T()

{

cout<<"Destructor called"<<endl;

}

T& operator=(const T& t)

{

this->i=t.i;

cout<<"= called"<<endl;

return *this;

}

private:

int i;

};

T f(T t)

{

return t;

}

void try1()

{

T t1;

f(t1);

}

void try2()

{

T t2;

T t3=f(t2);

}

void try3()

{

T t4;

T t5;

t5=f(t4);

}

int main()

{

cout<<"try1 start"<<endl;

try1();

cout<<"try1 over"<<endl;

cout<<"try2 start"<<endl;

try2();

cout<<"try2 over"<<endl;

cout<<"try3 start"<<endl;

try3();

cout<<"try3 over"<<endl;

system("pause");

}

运行结果如下:



解释:

void try1()
{T t1;  // 构造t1f(t1);  // f(t1),拷贝t1给形参t,f在 return 时又将t拷贝作为返回值
}void try2()
{T t2;  // 构造t2T t3=f(t2);  // f(t2),拷贝t2给形参t,f在 return 时又将t拷贝作为返回值,而这个返回值就是t3
} void try3()
{T t4;  // 构造t4T t5;  // 构造t4t5=f(t4);  // f(t4),拷贝t4给形参t,f在 return 时又将t拷贝作为返回值,这个返回值并不是t5,因为t5不在这里构造,因此调用=
}

这篇关于拷贝构造函数调用次数 和 临时变量 【转自百度知道】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974852

相关文章

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

百度OCR识别结构结构化处理视频

https://edu.csdn.net/course/detail/10506

说一说三大运营商的流量类型,看完就知道该怎么选运营商了!

说一说三大运营商的流量类型,看完就知道该怎么选运营商了?目前三大运营商的流量类型大致分为通用流量和定向流量,比如: 中国电信:通用流量+定向流量 电信推出的套餐通常由通用流量+定向流量所组成,通用流量比较多,一般都在100G以上,而且电信套餐长期套餐较多,大多无合约期,自主激活的卡也是最多的,适合没有通话需求的朋友办理。 中国移动:通用流量+定向流量 移动推出的套餐通常由通用流量+定向

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

Python临时计划

时间:6月——9月        入门

Linux中拷贝 cp命令中拷贝所有的写法详解

This text from: http://www.jb51.net/article/101641.htm 一、预备  cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

OC 中的深拷贝和浅拷贝

1.指针地址拷贝,浅拷贝,拷贝的只是指针地址,一旦我通过这个地址修改了值,那么原来的内存保存的值也会变化 2.mutablecopy  深拷贝,产生新对象 copy与mutablecopy区别在于返回的值,copy返回不可变对象,mutableCopy返回可以变化的值

PHP序列化用到的构造:__sleep() __wakeup()

串行化serialize可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.   当一个对象被串行化,PHP会