游戏开发论坛

 找回密码
 立即注册
搜索
楼主: sky110101

[救助]关于C++中的继承

[复制链接]

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-9-6 19:23:00 | 显示全部楼层

Re:[救助]关于C++中的继承

我觉得你对继承的概念有一些误解,首先对于 B 来说,是继承了 void setage(int x){age=x;}
int getage() const {return age;}
函数,但并不意味着 B 拥有 age 成员变量,因为 age 是在 A 中被声明为私有的,更何况你还是 pulbic 继承。至于在 B 中为什么可以访问 age,那是因为你在调用 setage 的时候,是执行的 A 的函数,既然是 A 内部操作,当然可以访问了,所以这是你迷惑的地方。
另外,这种设计类的方法和继承关系是不合理的,说白了讲,就是自找麻烦。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-6 19:25:00 | 显示全部楼层

Re:[救助]关于C++中的继承

我在VC6.0里编译过这样的继承方式,查看派生类对象的结构时,找不到基类的private变量啊 , 而且你这样,只是得到一个值,没有什么意义,

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-9-6 19:34:00 | 显示全部楼层

Re:[救助]关于C++中的继承

我却是在书上看到了这样的例子,写下来给你们看

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-6 19:37:00 | 显示全部楼层

Re:[救助]关于C++中的继承

你看的什么书 ?

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-9-6 19:43:00 | 显示全部楼层

Re:[救助]关于C++中的继承

《C++程序设计》清华大学出版的,我上大学用的教科书,应该不会有很大问题。
我是在看了《21天学通C++》后有问题看的。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-6 19:51:00 | 显示全部楼层

Re:[救助]关于C++中的继承

希奇古怪的例子,不过很典型,可能是说明一个继承的关系,而没有深入其中的语法是否合理吧

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-9-6 20:06:00 | 显示全部楼层

Re:[救助]关于C++中的继承

语法如果不合理编译就会出问题的,可是这把书上的例子简化的,能通过编译的。
我只是想弄清楚私有数据成员到底有没有被继承到派生类。
显然上面那位说没有继承了,可是那教科书上书继承了。可是如果继承了又不会是这样的。

4

主题

140

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2004-9-6 20:36:00 | 显示全部楼层

Re:[救助]关于C++中的继承

派生类继承基类的全部成员。
为什么可是如果继承了又不会是这样的?

5

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2004-9-6 23:18:00 | 显示全部楼层

Re: [救助]关于C++中的继承

看看 《Inside C++ Object Model》中文版吧。 [em2] [em2] [em2]

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-9-7 00:02:00 | 显示全部楼层

Re:[救助]关于C++中的继承

既然派生类继承基类的全部成员。
那么B类就应该有age这个数据成员了,既然age是B类的数据成员,那么B类的成员函数为什么不能访问该数据成员?
类的成员函数是可以自由访问自己数据成员的(即使是私有的)。
而这里,如果B类有个成员函数直接用到age,则出编译错误,说age是A类私有的,不能被访问。
这就矛盾了啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 08:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表