| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 912 人关注过本帖
标题:求助几个C++的概念问题
只看楼主 加入收藏
sherbin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-20
收藏
 问题点数:0 回复次数:12 
求助几个C++的概念问题
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
2。覆盖和重载的区别。
3。在哪些情况下必须调用构造函数。
搜索更多相关主题的帖子: 概念 
2006-04-20 12:32
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

的确很概念!


=×&D o I p R e E n C g T l X&×=
2006-04-20 12:47
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
我还没学到呢!不好意识啊

2006-04-20 20:53
lrjpb21stcn
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-21
收藏
得分:0 
太难了,

初学者,请多指教!
2006-04-21 16:40
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
重载是override吧?覆盖的英文是什么?

http://myajax95./
2006-04-21 23:11
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
收藏
得分:0 

重载和覆盖不是同一个概念
不要误人子弟


大家都是朋友,有空就来坐坐!
2006-04-22 11:14
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
不行
因为你的构造函数就是在执行类的定义,再还没有定义完全的时候又开始另一种重载定义,定义是不能递归自己的
3.在你的数据成员有指针等需要分配堆区间时(PNEW/DELETE),需要自己写,要不系统自动浅拷贝.而浅拷贝只能拷贝它的数值.
如果没有分配堆区间的动作系统的默认拷贝就能完成.
2.第二个没学呢.不知道覆盖

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-22 12:53
sherbin
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-20
收藏
得分:0 

我说的第3个问题是什么时候必须调用构造函数,我知道有一种情况是当有引用数据成员时,因为引用成员必须在定义的时候就初始化,所以这种情况必须调用构造函数,这和拷贝构造函数不是一回事

2006-04-23 21:50
西部天狼
Rank: 1
等 级:新手上路
帖 子:95
专家分:0
注 册:2006-2-23
收藏
得分:0 
以下是引用sherbin在2006-4-20 12:32:00的发言:
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
2。覆盖和重载的区别。
3。在哪些情况下必须调用构造函数。

1、在无参数构造函数中调用有参构造函数,那么有参构造函数的参数何来?
2、覆盖有时也被称为改写(override),覆盖是指对某一个函数的完全复写,包括返回值、参数名和参数表,如果其实现没有区别,那么这种覆盖就没有任何意义了,覆盖只能出现在子类继承父类并实现其虚拟函数时出现。重载(voerloaded)则要求函数的参数表必须有变化否,以使得同名函数表现出不同的处理功能。这种情况即可出现在父子继承关系中,也可出现在同一个类或不同的多个类中。两者都被称作是多态,也可以这样说覆盖是重载一种特殊情况。两者最重要的区别是,重载通常是在编译时解析的,是静态的;而改写则是一种运行时机制,即对于一个给定的调用,可能无法预言其将会执行何种行为,而只有到程序实际运行的时候才能对其进行确定。
3、你这个问题问得不是很明确,在任何情况下编译器都会为你调用构造函数。即使你没有显示的写出默认构造函数,编译器也会为你强行加入一个构造函数,以便在运行的时候调用。应该说,当你需要按照你要求的方式构造某个对象时,必须调用显示的调用有参构造数初始始化你的对象。这完全取决于你自己。


学习-->编程-->交流-->再学习-->再编程-->再交流
2006-04-24 13:57
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

恩,也就是说,覆盖只能是基类和派生类之间同过虚函数才能产生的。函数声明必须一样,函数定义却应该不一样(要不然覆盖也就失去了意义)。而函数重载(任何地方都可以重载函数,只要你确实需要)则要求必须是函数声明中,函数名一样,函数的参数类型或数量不同。至于定义可以相同,也可不相同。

[此贴子已经被作者于2006-4-24 19:55:05编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-24 19:54
快速回复:求助几个C++的概念问题
数据加载中...
 
   



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

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