关于类的继承的一个问题,请高手指教!

netlt 2008-04-09 04:45:27
#include <iostream.h>
class one //定义一个one类
{
public:
void setA(int);
void showA()
{cout<<A;}
private:
int A;
};
class two //定义一个two类
{
public:
void setB(int);
void showB()
{cout<<B;}
private:
int B;
};
class three:public one,private two //定义一个派生c类,是a的公有继承,b的私有继承
{
public:
void setC(int,int,int);
void showC()
{cout<<A<<B<<C;} //???这儿错了,要同时输出ABC,请问该如何写?
private:
int C;
};

void one::setA(int x) //定义one two three类的构造函数
{A=x;};
void two::setB(int y)
{B=y;};
void three::setC(int x,int y,int z)
{setA(x);setB(y);C=z;};

void main() //主程序
{
three obj;
obj.setA(5);
obj.showA();
obj.setC(6,7,9);
obj.showC();

}











...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickone 2008-04-09
  • 打赏
  • 举报
回复
所有的实现都应该是private,public和protected都是接口 学下设计模式,不然程式有点混乱
ttkk_2007 2008-04-09
  • 打赏
  • 举报
回复
three虽然继承了one,two,但是A,B都是private的,three也访问不了
arong1234 2008-04-09
  • 打赏
  • 举报
回复
要学会合理的设定自己的需求,“想”访问私有变量,要么设置为private不合理,要么是你想访问的要求不合理,总之是有点违反OO的
arong1234 2008-04-09
  • 打赏
  • 举报
回复
不能总直接访问变量,你既然设置为private,自然除了类自身之外都不能直接访问
而且你已经有showA,showB,合理的做法自然是
void C::showC(){
showA();
showB();
cout << C;
}
Inhibitory 2008-04-09
  • 打赏
  • 举报
回复
{cout < <A < <B < <C;} //???这儿错了,要同时输出ABC,请问该如何写?
注意, A, B是private的, 只能被当前类和友员访问.
可以把他们声明为protected的, 这样即能被子类访问, 又能不被外界访问.

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧