| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3596 人关注过本帖
标题:[分享]一个有趣的小程序
只看楼主 加入收藏
hegj
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-9-5
收藏
 问题点数:0 回复次数:6 
[分享]一个有趣的小程序
与大家分享一个有趣的程序。摘自《21天学通c++》
#include<iostream>

using namespace std;
class SimpleCat
{
public:
SimpleCat();
SimpleCat(SimpleCat&);
~SimpleCat();
};

SimpleCat::SimpleCat()
{
cout << "Simple Cat Constructor..." << endl;
}

SimpleCat::SimpleCat(SimpleCat&)
{
cout << "Simple Cat Cope Constructor ..." << endl;
}

SimpleCat::~SimpleCat()
{
cout << "Simple Cat Destructor ..." << endl;
}

SimpleCat FunctionOne(SimpleCat thecat);
SimpleCat* FunctionTwo(SimpleCat *theCat);

int main()
{
cout << "Making a cat..." << endl;
SimpleCat Frisky;
cout<<"Calling FunctionOne..." << endl;
FunctionOne(Frisky);
cout << "Calling FunctionTwo..." << endl;
FunctionTwo(&Frisky);
return 0;
}

SimpleCat FunctionOne(SimpleCat theCat)
{
cout << "Function One . Returning..." << endl;
return theCat;
}

SimpleCat* FunctionTwo(SimpleCat *theCat)
{
cout << "Function Two. Returning..." << endl;
return theCat;
}
希望没打错.
这个程序旨在讲解为什么要用引用传递对象。
大家可以看看输出,从中可以收获不少。
可以看到构造,复制构造,析构函数怎样调用。
本人觉得挺有意思的。

[此贴子已经被作者于2007-11-2 23:07:14编辑过]

搜索更多相关主题的帖子: SimpleCat Constructor cout 
2007-11-02 21:35
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
加点说明

Fight  to win  or  die...
2007-11-02 22:00
冷云逸
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-16
收藏
得分:0 
为什么有趣呀?

2007-11-02 22:27
冷云逸
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-16
收藏
得分:0 
看了 你是不是想让我们看一下程序执行的先后顺序呀?

2007-11-02 22:33
hegj
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-9-5
收藏
得分:0 
输出:
Making a cat...
Simple Cat Constructor... //声明Frisky时,调用默认构造函数
Calling FunctionOne...
Simple Cat Cope Constructor ... //按值传递,会在堆栈中创建一个Frisky的复制1,作为函数的局部对象
Function One . Returning...
Simple Cat Cope Constructor ... //按值返回,会生成一个复制2
Simple Cat Destructor ... //返回值没有被赋给任何对象,因此为返回而创建的临时对象被丢弃,导致析构函数被调用
Simple Cat Destructor ... //FanctionOne 结束,局部拷贝不再在作用域,因此被销毁,复制1析构
Calling FunctionTwo... //按引用传递,不会创建对象拷贝,按引用返回,也不会创建拷贝,不用调用复制构造函数与析构函数。可以效率很多
Function Two. Returning...
Simple Cat Destructor ... //程序结束,Frisky不再在作用域,调用析构函数将其销毁。

希望与大家分享。一起进步。。。

2007-11-02 23:26
a217zxg
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-10-20
收藏
得分:0 
    这个主要是弄清构造与析构的顺序就是了!
2007-11-03 19:16
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
在网吧  无法调试 等待寝室牵网  究竟如何  

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2007-11-03 23:08
快速回复:[分享]一个有趣的小程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025562 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved