C++中的临时对象
来源:互联网 发布:清风网络传奇 编辑:程序博客网 时间:2024/05/16 00:58
/*-----------------------
Platform:WinXp + VC6
-----------------------*/
#include <stdio.h>
class CTemp
{
public:
int a;
int b;
public:
CTemp(CTemp& t){ printf("Copy function!/n");a = t.a;b = t.b;};
CTemp(int m = 0,int n = 0);
virtual ~CTemp(){};
public:
int GetSum(CTemp ts);
};
CTemp::CTemp(int m , int n)
{
printf("Construct function!/n");
a = m;b=n;
printf("a = %d/n",a);
printf("b = %d/n",b);
}
int CTemp::GetSum(CTemp ts)
{
int tmp = ts.a + ts.b;
ts.a = 1000; //此时修改的是tm的一个副本
return tmp;
}
//--------------Main函数-----------------
void main()
{
CTemp tm(10,20);
printf("Sum = %d /n",tm.GetSum(tm));
printf("tm.a = %d /n",tm.a);
}
--------------------------------------------------------
a = 10
b = 20
Copy function!
Sum = 30
tm.a = 10
int CTemp::GetSum(CTemp& ts)
{
int tmp = ts.a + ts.b;
ts.a = 1000; //此时通过ts这个引用参考(refer to)对象本身
return tmp;
}
a = 10
b = 20
Sum = 30
tm.a = 1000
void main()
{
CTemp tm(10,20),sum;
sum = 1000; //调用CTemp(int m = 0,int n = 0)构造函数
printf("Sum = %d /n",tm.GetSum(sum));
}
-----------------------------------------------------------
a = 10
b = 20
Construct function!
a = 0
b = 0
Construct function!
a = 1000
b = 0
Sum = 1000
void main()
{
CTemp tm(10,20);
CTemp sum = 1000;
printf("Sum = %d /n",tm.GetSum(sum));
}
a = 10
b = 20
Construct function!
a = 1000
b = 0
Sum = 1000
#include <stdio.h>
class CTemp
{
public:
int a;
public:
CTemp(CTemp& t) //Copy Ctor!
{
printf("Copy Ctor!/n");
a = t.a;
};
CTemp& operator=(CTemp& t) //Assignment Copy Ctor!
{
printf("Assignment Copy Ctor!/n");
a = t.a;
return *this;
}
CTemp(int m = 0);
virtual ~CTemp(){};
};
CTemp::CTemp(int m) //Copy Ctor!
{
printf("Construct function!/n");
a = m;
printf("a = %d/n",a);
}
CTemp Double(CTemp& ts)
{
CTemp tmp; //构建一个临时对象
tmp.a = ts.a*2;
return tmp;
}
//-------------Main函数-----------------
void main()
{
CTemp tm(10),sum;
printf("/n/n");
sum = Double(tm);
printf("/n/nsum.a = %d /n",sum.a);
}
a = 10
Construct function!
a = 0
Construct function!
a = 0
Copy Ctor!
Assignment Copy Ctor!
sum.a = 20
CTemp Double(CTemp& ts)
{
return ts.a*2;
}
/*--------上面的代码相当于-------
CTemp _ret
void Double(CTemp& ts)
{
_ret.a = ts.a*2;
}
---------------*/
//---------Main函数-----------
void main()
{
CTemp tm(10);
printf("/n/n");
CTemp sum = Double(tm);
printf("/n/nsum.a = %d /n",sum.a);
}
a = 10
Construct function!
a = 20
sum.a = 20
- c/c++-c++中的临时对象问题
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- 函数中的临时对象
- c++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- C++中的临时对象
- Java序列化的作用
- android优化技术
- ios生成圆角图片
- 开源企业级云架构的方案选择
- 我们是一群和平年代充满浮躁与抱怨的程序员
- C++中的临时对象
- 更改MyEclipse/Eclipse代码自动换行的长度
- 用GDB调试程序(一)
- c/c++参数传递方式
- 浅谈图片优化的方法
- pmp 总时差 自由时差 说明 和计算
- WINCE 详解CTL_CODE宏
- 用GDB调试程序(二)
- 使用setStyleSheet来设置图形界面的外观