c++ 关于派生类调用基类成员问题

/*6.定义点CPoint类作为基类,在此基础上派生出直线CLine类和圆CCircle类,并要求各派生类具有以下特点:a.CLine类含有计算直线长度和斜率的成员函数;... /*6.定义点 CPoint 类作为基类,在此基础上派生出直线 CLine 类和圆 CCircle 类,并要求各
派生类具有以下特点:
a.CLine 类含有计算直线长度和斜率的成员函数;
在主函数中设计一段代码来测试以上类功能的正确性。
*/

#include <iostream>
#include <math.h>
using namespace std;
class CPoint
{
protected:

int x; //坐标x
int y;//坐标y
public:
CPoint(int a=0,int b=0):x(a),y(b)
{}
void dispaly()
{
cout<<"x="<<x<<" "<<"y="<<y<<endl;
}
};

class CLine:public CPoint
{
private:
double k;//斜率
int len;//长度
public:
CLine(int a,int b,double c,int d):CPoint(a,b),k(c),len(0)
{}
void lenth(CPoint a,CPoint b)
{
len=sqrt(pow((b.x-a.x),2)+pow((b.y-a.y),2)); //计算长度 就是这儿错了 说不能调用保护成员
}
void xielv(CPoint a,CPoint b)
{
k=(b.y-a.y)/(b.x-a.x); //计算斜率
}
void print()
{
dispaly();
cout<<"k="<<k<<" "<<"len="<<len<<endl;
}
};
展开
 我来答
百度网友4bf9ad5
2014-04-15
知道答主
回答量:6
采纳率:0%
帮助的人:7497
展开全部
对,,基类中x,y是保护成员。公有继承后,其性质不变,仍作为派生类的保护成员,但无论在派生类还是基类,其对象是都不能直接访问保护成员的。。。但是,类的成员函数与友元函数及子对象函数除外。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kelykelykely
2014-04-16 · TA获得超过143个赞
知道答主
回答量:45
采纳率:0%
帮助的人:16.9万
展开全部
调用的时候你必须在类外定义了基类对象作实参,但是由于数据成员是保护型的,不能在类外访问。所以不能这样做。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式