c++中派生类如何访问基类成员变量?

#include<iostream.h>classanimal{public:inta;animal(){a=20;}voideat(){cout<<"animaleat... #include<iostream.h>
class animal
{
public:
int a;
animal()
{
a=20;
}
void eat()
{
cout<<"animal eat"<<a<<endl;
}
};
class fish:public animal
{
public:
fish()
{}
int t;
void fw()
{
t=animal.a;
}

};

这里就出错了,提示error C2275: 'fish::animal' : illegal use of this type as an expression

};
int main()
{
animal an;
fish fh;
an.eat();
fh.eat();
return 0;
}
复制错了,后面main函数那里没用
展开
 我来答
Nor_yourgodsy
2015-11-13 · TA获得超过1.8万个赞
知道大有可为答主
回答量:3659
采纳率:82%
帮助的人:294万
展开全部

C++中派生类对基类成员的访问形式主要有以下两种:
1、内部访问:由派生类中新增成员对基类继承来的成员的访问。
2、对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问。

三种继承方式下,派生类对基类成员的访问规则。

1、私有继承的访问规则

2、公有继承的访问规则

3、保护继承的访问规则

百度网友7b23e45
2012-07-13 · TA获得超过204个赞
知道答主
回答量:52
采纳率:0%
帮助的人:37.6万
展开全部
问题1:静态变量可以通过继承到子类里,但是你不可能通过子类对X进行第二次初始化,绝对报错
问题2:你可以在子类里去修改这个静态变量,但是在修改这个值之后,即使你去调基类的foo函数,x还是你在子类里已经修改了的值,因为子类和基类的x其实是同一个,他们是同一块内存。

问题3:在基类里没法访问派生类的X。你可以通过多态的特性,在子类父类里写一个虚函数来设置x的值,然后通过使用A的指针去调用B类里的方法。但是对静态变量而言没有什么意义,因为他们是同一个东西,在哪修改都一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-10-20 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1300万
展开全部
t=animal.a;

这句话不行。a是一个普通成员变量,只有对一个具体的对象,才会有.a这种用法。
追问
那派生类想访问a怎么访问?
追答
想要访问变量a,只能给一个具体的对象,比如你可以给这个函数加个参数:
void fw(animal obj)
{
t=obj.a;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whanyzt
2012-10-26 · TA获得超过481个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:134万
展开全部
很简单,fish改成这样就可以了:
class fish:public animal
{
public:
fish(){}
int t;
void fw()
{
t=a;
}
};
因为fish是animal的子类,对于fish的任何一个对象,它也拥有animal的特征,所以a也是fish的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HongZe081100
2012-10-20 · TA获得超过580个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:439万
展开全部
这里a是public的可以直接访问
void fw()
{
t=a;
}
当然为了表明它属于基类:
可以
void fw()
{
t=animal::a;
}
如果是protected的也是这样做。
如果你把它弄成private的了,可以在基类中定义public的一个相应的gette/setterr函数即可。
如果实在不想这么做,又想访问,可以用指针的方法无视权限任意涂改,当然你要知道你的目的
别弄错了,因为正常合法是不允许这么做的,但练习无所谓。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式