主题:大虾救命啊
ww3355267
[专家分:0] 发布于 2010-07-08 22:26:00
小弟才学C++三个月(自学)书上有句话小弟百思不得其解求哥哥姐姐们帮帮我吧(哎太笨了)
形参是基类的引用,因此它可以引用派生类这样,将olaf1初始化为olaf2时,将调用该构造函数
(1这个构造函数是基类的还是派生类的)它用于复制olaf1的成员,换句话说,他将olaf1初始化为嵌套在ratedplayer(派生类)对象olaf2中的tabletennlsplayer(基类)尤其是最后一句话到底是什么意思啊帮帮我吧
回复列表 (共8个回复)
沙发
ww3355267 [专家分:0] 发布于 2010-07-08 22:57:00
还有就是小弟对基类和派生类的分析对吗帮忙指点下(小弟愚笨啊)
为什么基类指针和引用可以使用派生类的对象,而派生类指针和应用不能使用基类的对象,而不能使用派生类的方法
答:应为在一个类成为另一个类的基类是,这个继承了基类的派生类就有了基类的所有属性,换句话说这个派生类就是原始基类的一个副本扩展类,理所应当基类指针和引用也被派生类所继承我们现在回忆下
在前面已经说了继承的好处之一就是可以在派生类中使用基类的方法如何使用呢?好吧我们这样想想如果基类的指针可以使用派生类的对象为派生类对象调用基类的方法不就万事大吉了吗?(这样行吗)
事实上这是可以的应为1继承基类的派生类我们前面已经说了它实际上就是一个副本扩展类,所以基类的指针和引用在一定意义上他也是这派生类引用和指针所以毫无疑问他可以指向派生类的对象。
现在我们再来看看为什么派生类指针和引用不能使用基类的对象,再回答这个问题前我们先想想为什么要用派生类的指针和引用来使用基类的对象呢?毫无疑问这与上面相同也是为了为基类的对象来调用
派生类的方法(至少现在是这样的)可是这样可行吗?我们知道被继承的只是一个基类的副本也就是说原始版本并不知道自己已经被派生类继承了,跟别说它知道派生类的方法了,这将发生一个很严重的
错误即基类根本不知道怎么使用派生类应为它根本不知道这种方法。
最后一个问题
板凳
eastcowboy [专家分:25370] 发布于 2010-07-09 01:28:00
如果书上说的都是正确的,并且您又看不懂,那么最直接的办法就是,回过头再看一看。
“形参是基类的引用,因此……”
这句话应该只是后半句吧?前面应该还有一些叙述才对。
先扯一点语文方面的,比如我说“爸爸是工程师”,并不是说“只要是爸爸就一定是工程师”,其实真正的意思是“某人的爸爸是一位工程师”。至于到底谁的爸爸是工程师,请看前文。
这里也一样。“形参是基类的引用”,并不是说“只要是形参就一定是基类的引用”,其实真正的意思是“某个形参,是对基类的引用”。至于到底是哪个形参,到底是对谁的积累的引用,请看前文。
再来。
“将olaf1初始化为olaf2时,将调用该构造函数”
构造函数是做什么用的呢?当然是用来进行初始化。谁被初始化,就调用谁的类的构造函数。“将olaf1初始化为olaf2时”,这里可以知道是olaf2被初始化,所以就是调用olaf2的类的构造函数。olaf2的类是基类还是派生类?楼主可以自己判断了。
“为什么基类指针和引用可以使用派生类的对象,而派生类指针和应用不能使用基类的对象,而不能使用派生类的方法”
真不知道楼主在哪看到这样乱七八糟的说法了。仔细下面这些,这才是比较正确的描述。
(1) 基类的指针,自然可以指向基类的对象。派生类的指针,自然可以指向派生类的对象。
(2) 派生类的对象其实也是一种基类的对象。把这一条代入第(2)条,得到“基类的指针,可以指向派生类的对象”
(3) 基类的对象不一定是派生类的对象。所以派生类的指针,无法指向基类的对象。
或者,来个形象一点的:
(1) 学生的指针可以指向一个学生。人的指针可以指向一个人。
(2) 学生是人的一种。所以人的指针可以指向学生(可以把学生当作人)
(3) 人不一定是学生。所以学生的指针不能指向人(不能把人都当作学生)
读书要多想,才能明白作者的意思。如果读一次无法明白,那就多读几次。如果你已经开始犯迷糊了,那就不要再往下看,好好思考,为什么没有理解?多读,多想,直到理解为止。
当然,也可能是书本本身质量不高,作者也没有弄清楚、写清楚。如果是这样的话,那就可以换几本书了。
3 楼
ww3355267 [专家分:0] 发布于 2010-07-09 08:43:00
[quote]如果书上说的都是正确的,并且您又看不懂,那么最直接的办法就是,回过头再看一看。
“形参是基类的引用,因此……”
这句话应该只是后半句吧?前面应该还有一些叙述才对。
先扯一点语文方面的,比如我说“爸爸是工程师”,并不是说“只要是爸爸就一定是工程师”,其实真正的意思是“某人的爸爸是一位工程师”。至于到底谁的爸爸是工程师,请看前文。
这里也一样。“形参是基类的引用”,并不是说“只要是形参就一定是基类的引用”,其实真正的意思是“某个形参,是对基类的引用”。至于到底是哪个形参,到底是对谁的积累的引用,请看前文。
再来。
“将olaf1初始化为olaf2时,将调用该构造函数”
构造函数是做什么用的呢?当然是用来进行初始化。谁被初始化,就调用谁的类的构造函数。“将olaf1初始化为olaf2时”,这里可以知道是olaf2被初始化,所以就是调用olaf2的类的构造函数。olaf2的类是基类还是派生类?楼主可以自己判断了。
“为什么基类指针和引用可以使用派生类的对象,而派生类指针和应用不能使用基类的对象,而不能使用派生类的方法”
真不知道楼主在哪看到这样乱七八糟的说法了。仔细下面这些,这才是比较正确的描述。
(1) 基类的指针,自然可以指向基类的对象。派生类的指针,自然可以指向派生类的对象。
(2) 派生类的对象其实也是一种基类的对象。把这一条代入第(2)条,得到“基类的指针,可以指向派生类的对象”
(3) 基类的对象不一定是派生类的对象。所以派生类的指针,无法指向基类的对象。
或者,来个形象一点的:
(1) 学生的指针可以指向一个学生。人的指针可以指向一个人。
(2) 学生是人的一种。所以人的指针可以指向学生(可以把学生当作人)
(3) 人不一定是学生。所以学生的指针不能指向人(不能把人都当作学生)
读书要多想,才能明白作者的意思。如果读一次无法明白,那就多读几次。如果你已经开始犯迷糊了,那就不要再往下看,好好思考,为什么没有理解?多读,多想,直到理解为止。
当然,也可能是书本本身质量不高,作者也没有弄清楚、写清楚。如果是这样的话,那就可以换几本书了。[/quote]
谢谢各位大侠解救啊,看后小弟顿时茅塞顿开(哎,是不是小弟太过愚笨啊)
4 楼
alweeq86 [专家分:1170] 发布于 2010-07-09 08:59:00
[quote]如果书上说的都是正确的,并且您又看不懂,那么最直接的办法就是,回过头再看一看。
“形参是基类的引用,因此……”
这句话应该只是后半句吧?前面应该还有一些叙述才对。
先扯一点语文方面的,比如我说“爸爸是工程师”,并不是说“只要是爸爸就一定是工程师”,其实真正的意思是“某人的爸爸是一位工程师”。至于到底谁的爸爸是工程师,请看前文。
这里也一样。“形参是基类的引用”,并不是说“只要是形参就一定是基类的引用”,其实真正的意思是“某个形参,是对基类的引用”。至于到底是哪个形参,到底是对谁的积累的引用,请看前文。
再来。
“将olaf1初始化为olaf2时,将调用该构造函数”
构造函数是做什么用的呢?当然是用来进行初始化。谁被初始化,就调用谁的类的构造函数。“将olaf1初始化为olaf2时”,这里可以知道是olaf2被初始化,所以就是调用olaf2的类的构造函数。olaf2的类是基类还是派生类?楼主可以自己判断了。
“为什么基类指针和引用可以使用派生类的对象,而派生类指针和应用不能使用基类的对象,而不能使用派生类的方法”
真不知道楼主在哪看到这样乱七八糟的说法了。仔细下面这些,这才是比较正确的描述。
(1) 基类的指针,自然可以指向基类的对象。派生类的指针,自然可以指向派生类的对象。
(2) 派生类的对象其实也是一种基类的对象。把这一条代入第(2)条,得到“基类的指针,可以指向派生类的对象”
(3) 基类的对象不一定是派生类的对象。所以派生类的指针,无法指向基类的对象。
或者,来个形象一点的:
(1) 学生的指针可以指向一个学生。人的指针可以指向一个人。
(2) 学生是人的一种。所以人的指针可以指向学生(可以把学生当作人)
(3) 人不一定是学生。所以学生的指针不能指向人(不能把人都当作学生)
读书要多想,才能明白作者的意思。如果读一次无法明白,那就多读几次。如果你已经开始犯迷糊了,那就不要再往下看,好好思考,为什么没有理解?多读,多想,直到理解为止。
当然,也可能是书本本身质量不高,作者也没有弄清楚、写清楚。如果是这样的话,那就可以换几本书了。[/quote]
高手 看的懂的不一定会 只有说的让别人懂了才是真正的会了
5 楼
强强 [专家分:4740] 发布于 2010-07-09 09:33:00
好!!!使我受益非浅,赞一个
6 楼
peige [专家分:550] 发布于 2010-07-09 13:34:00
慢慢来,谁没有经过这样的一个阶段?
8 楼
龙母绘龙 [专家分:50] 发布于 2010-07-17 11:25:00
建议自学不好懂,应该找一些视频看看啊,然后结合着教材看,这样容易理解。我有同样的感觉,自学挺难得,实话!
我来回复