| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 774 人关注过本帖
标题:[讨论]看下这段程序中类里的红色代码的意义是什么?
取消只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
 问题点数:0 回复次数:3 
[讨论]看下这段程序中类里的红色代码的意义是什么?


#include <iostream>
#include <cstdlib>
#include "File1.h"
using namespace std;

class CDateinfo
{
public:
CDateinfo();
CDateinfo(int year, int month, int day);
~CDateinfo();
void SetDate(int year, int month, int day);
void GetDate();
private:
int year;
int month;
int day;
};

CDateinfo::CDateinfo()
{
this->year = 2007;
this->month = 5;
this->day = 23;
}

CDateinfo::CDateinfo(int year, int month, int day)
{
this->year = year;
this->month = month;
this->day = day;
}

CDateinfo::~CDateinfo()
{
cout << "Unload me" << endl;
this->year = 0;
this->month = 0;
this->day = 0;
}

void CDateinfo::SetDate(int year, int month, int day)
{
this->year = year;
this->month = month;
this->day = day;
}

void CDateinfo::GetDate()
{
cout << "当前日期为: " << this->year << "年"
<< this->month << "月"
<< this->day << "日"
<<endl;
}

int main()
{
CDateinfo* MyDate = new CDateinfo;
MyDate->GetDate();
cout << "执行delete后自动调用析构函数" << endl;
delete MyDate;


cout << endl << endl;

CDateinfo* ThisDate = new CDateinfo(2007, 5, 23);
ThisDate->GetDate();
delete ThisDate;

cout << endl <<endl;

CDateinfo* OtherDate = new CDateinfo;
OtherDate->SetDate(2008,8,8);
OtherDate->GetDate();
delete OtherDate;

cout << endl << endl;

cout << "注意delete OtherDate 后再次调用 OtherDate 的GetDate方法" << endl;
OtherDate->GetDate();

system("pause");
return 0;
}
//---------------------------------------------------------------------------


在类中的析构函数中我加入了
this->year = 0;
this->month = 0;
this->day = 0;
然后delete了OtherDate后再调用GetDate方法,我在dev-c中运行的结果是 0年0月0日的,其它的编译器就是乱来的.
然后我在dev-c中调试,单步进入,到了this->year = 0;这句之后就不能再运行到下一步了.

搜索更多相关主题的帖子: 代码 
2007-06-20 09:36
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
E文的原因,看得不是很明白....

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 10:56
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
我说的那个乱来非彼乱来,意思是不确定性....
呵呵...加那代码我就是想看看会发生什么事情...


/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 11:57
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 

为什么delete了一个对象,还可以使用这个对象,
就是说进行这个对象的方法调用不会出错.


/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-20 14:15
快速回复:[讨论]看下这段程序中类里的红色代码的意义是什么?
数据加载中...
 
   



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

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