📄 subject_15486.htm
字号:
<p>
序号:15486 发表者:bborn 发表日期:2002-09-18 17:32:50
<br>主题:几个入门小问题 请大家帮忙
<br>内容: <BR> 1.堆栈是什么意思? 堆又是什么意思? 栈又是什么意思? 为什么看到有书上说在栈上创建对象 <BR><BR>2.看机械工业出版社一本翻译的c++教程上一个例子有些迷惑 <BR> 先定义了一个基类, 再定义一个继承的类,继承的类可以直接再新定义一个基类的同名函数吗? 那个函数没有声明是虚函数。 好象不可以吧? <BR><BR>3.在类的函数定义后面看到这样的语句是什么意思 :函数名 ? 这是干什么用的? <BR> <BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:robin 回复日期:2002-09-19 10:19:29
<br>内容:1。堆栈可以理解为一种特殊的链表吧,一个特殊的容器,遵循“先进后出”的规则。节点的添加和删除只能在栈顶进行,就像往子弹夹中上子弹一样。其他的我不太清楚了,不敢乱讲!你再查查书吧,我这方面的知识不够啊T_T。<BR>2。首先要看基类和子类的同名函数是否有相同的参数了,如果没有相同的参数的话则:成员函数是属于被重载,virtual关键字可有可无。<BR> 如果是有相同的参数的话则属于c++“隐藏(hides)”规则。表面看来是没问题的——用基类调用基类函数,用子类调用子类函数。如下所示:<BR>//Ctest.h<BR>#include<iostream.h><BR>class base<BR>{<BR>public :<BR> void Print_Test(int x){cout<<"base:"<<x; };<BR>};<BR>class derived : public base<BR>{<BR>public :<BR> void Print_Test(int x){cout<<"derived:"<<x;};<BR>};<BR><BR>//Ctest.c<BR>#include"Ctest.h"<BR>int main()<BR>{<BR> int i;<BR><BR> base b ,*pb;<BR> derived d , *pd;<BR><BR> pb = &d;<BR> pb->Print_Test(14);<BR><BR> return(0);<BR>}<BR>pb->Print_Test(14);的结果是:base14而不是我们所期望的derived14;也就是说当Print_Test被调用时,任何一个derived对象都可能表现出base或derived的行为。<BR>3。这个问题不太清楚,你最好把例子的原型写出来。或这问问高手吧!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bborn 回复日期:2002-09-20 10:09:10
<br>内容:那堆是什么意思?栈了?<BR><BR>第二个就是说 如果不是虚函数就不能实现多态吧 是这样的吧 调用的还是基类的函数
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:植物人 回复日期:2002-09-20 17:35:46
<br>内容:问题2 好象不是这样的吧,只要没有virtual,函数名相同就会产生隐藏。<BR>我记得是这样的。<BR>重载只发生在相同的范围(如同一个类)中,基类派生类不会产生重载<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:robin 回复日期:2002-09-24 11:07:31
<br>内容:bborn:<BR> 对不起,begar说的是对的,只要没有virtual,哪怕函数参数不一样基类函数还是会被子类函数所隐藏。<BR> 如果不是虚函数的话,也能实现继承,但是不能叫多态!因为当我们用基类的指针调用函数是,会调用基类的函数,而不是子类的函数。而用virtual修饰的话则不管是基类还是子类的指针都是调用子类的函数。这样才叫做多态性。所以你说的也是对的。<BR> 这个问题我只是以我有的水平来回答一下,我是抱着互相帮助的态度回答的,没想还有那么多错误,而且我也没回答完问题,这50分我不能拿<BR>!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bborn 回复日期:2002-09-25 15:32:54
<br>内容:还很很感谢你<BR>大家来这就是互相学习的<BR>至于分<BR>我也不知道怎么才能转过去<BR>就这样了吧<BR>我想begar也不会介意的 :)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:植物人 回复日期:2002-09-25 15:52:15
<br>内容:主要是互相学习。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -