| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:NEW的应用的一个简单问题
只看楼主 加入收藏
saltfish_007
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-10-21
收藏
 问题点数:0 回复次数:4 
NEW的应用的一个简单问题
void fn()

{Tdate*ps;

ps=newTdate; //分配堆空间并构造它

//......

delete ps;} //先析构,然后将空间返还给堆


以上是程序1,注意红色字体部分。


以下是程序2,注意红色字体部分。
//....................

void fn()

{Tdate*pD; //Tdate是一个构造函数

pD=new Tdate(1,1,1998);

//........

delete(pD);}





问题结束,请问一下,以上两个程序,红色字体部分有何区别?

我虽然看了书,但是书上说的不是太清楚,请各位指教,谢谢
搜索更多相关主题的帖子: NEW 简单问题 应用 
2007-01-10 10:23
radcat
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:306
专家分:45
注 册:2006-9-12
收藏
得分:0 
都定义了一个指针对象,第一个用的是无参构造函数,第二个是带参数的构造函数

2007-01-10 15:50
saltfish_007
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-10-21
收藏
得分:0 
这个我知道,但是请问有什么区别??

第二句红色语句的解释(pD=new Tdate(1,1,1998);),书上是这么说的:使new去调用了构造函数Tdate(int,int,int),new是根据参数匹配的原则来调用构造函数的。如果“pD=new Tdate(1,1,1998);”写成:pD=new Tdate;则由于Tdate类没有默认构造函数(已被Tdate(int,int,int)覆盖)而使该语句报错。从堆中还可以分配对象数组。




我就是看不懂书上的解释,请各位指教,谢谢

在此感谢radcat的回复,谢谢
2007-01-10 19:27
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 
一般情况下只要定义了有参构造函数后,必须定义一个默认构造函数,否则定义对象的时候容易出错,因为多数时候定义的对象并不马上赋值。

2007-01-10 21:05
saltfish_007
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-10-21
收藏
得分:0 
谢谢cz522321的解释,不过你能不能举个具体的例子呢?谢谢
2007-01-11 21:42
快速回复:NEW的应用的一个简单问题
数据加载中...
 
   



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

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