游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9516|回复: 30

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

[复制链接]

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2004-9-6 18:21:00 | 显示全部楼层 |阅读模式
#include <iostream>
using namespace std;
class A
{
public:
        A(){}
        ~A(){}
        void setage(int x){age=x;}
        int getage() const {return age;}
private:
        int age;
};
class B : public A
{
public:
        B(){}
        ~B(){}
};
int main()
{
        B sky;
        sky.setage(10);
        cout <<"sky : "<<sky.getage()<<endl;
        return 0;
}

请问派生类B有没有继承基类A的getage方法和setage方法以及成员变量age?


33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

继承了

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

刚才漏了一点,age没有被继承,其他的都被继承了

1

主题

12

帖子

12

积分

新手上路

Rank: 1

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

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

你的意思就是说B类没有age这个成员变量了。那么sky.setage(10)及sky.getage()的意义是什么?
B类既然公有继承了这两个公有方法,那么对象sky应该可以直接访问这两个方法。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

我没有这么试过,你的编译器能通过吗?

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

遇到这种情况,我一般将成员变量申明为protected , 这样不就两全齐美吗?

1

主题

12

帖子

12

积分

新手上路

Rank: 1

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

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

通过了!
在书上也看到这样的例子了,可是不管是什么样的继承,派生类是继承了基类的全部成员啊(除了构造函数和析够函数)。只不过不同的继承方式改变的是成员的访问属性。也就是说,B类的对象sky也有个私有成员变量age,那么为什么自己的成员函数不能访问自己的成员变量?

1

主题

12

帖子

12

积分

新手上路

Rank: 1

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

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

这个我知道,我只是想弄清楚继承到底是怎么回事。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

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

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

我开始也这么想,但这么做有什么意义呢?
如果是这样的话,那protected和private又有什么区别呢
编译后的结果是什么?

1

主题

12

帖子

12

积分

新手上路

Rank: 1

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

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

结果和用protected一样。
one : 10
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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