为什么将CRectangle类、CTriangle的继承关系换乘protected和private编译就会报错,只能用public继承

#include<iostream.h>classCPolygon{protected:intwidth,height;public:voidset_values(int... # include <iostream.h>
class CPolygon{
protected:
int width,height;
public:
void set_values(int a,int b){width=a;height=b;}
};
class CRectangle:public CPolygon{
public:
int area(void){return (width*height);}
};
class CTriangle:public CPolygon{
public:
int area(void){return (width*height/2);}
};
void main(){
CRectangle rect;
CTriangle trgl;
rect.set_values(4,5);
trgl.set_values(4,5);
cout<<rect.area()<<endl;
cout<<trgl.area()<<endl;
}
展开
 我来答
wanfustudio
2012-04-24 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3717万
展开全部
改变了基类的成员的性质,都会变成protected或者private的属性
可以在类内使用,类外调用没有权限,不然你指望protected private作何用处,全部都写成public不是更好?
追问
用protected和private继承能够改变基类成员的性质?不是继承过来的性质改变吗?
追答
可能我没说没变,改变的是派生类中的那份基类。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式