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;
}
}; 展开
派生类具有以下特点:
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;
}
}; 展开
2个回答
展开全部
对,,基类中x,y是保护成员。公有继承后,其性质不变,仍作为派生类的保护成员,但无论在派生类还是基类,其对象是都不能直接访问保护成员的。。。但是,类的成员函数与友元函数及子对象函数除外。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询