其实 Point_2是由Point_3 进行公有继承得到的 这个要求不合理的,应该写个抽象类,给它们共同继承比较好;
既然题目这么要求,就直接上代码了;按题目要求写的。如果你编译器不识别std::cout 就改成cout。我习惯这么写
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
class Point_3
{
public:
Point_3(): m_x(0),m_y(0),m_z(0),m_l(0){}
virtual ~Point_3(){}
virtual double getDis(double x,double y,double z)
{
m_x = x;
m_y = y;
m_z = z;
m_l = sqrt(x*x + y*y + z*z);
return m_l;
}
virtual void showPos()
{
std::cout << m_l << endl;
std::cout << m_x << " " << m_y << " " << m_z << endl;
}
double m_x;
double m_y;
double m_z;
double m_l;
};
class Point_2:public Point_3
{
public:
Point_2():Point_3(){}
~Point_2(){}
virtual double getDis(double x,double y,double z)
{
m_x = x;
m_y = y;
m_l = sqrt(x*x + y*y);
return m_l;
}
virtual void showPos()
{
std::cout << fixed << setprecision(2);
std::cout << m_l << endl;
std::cout << m_x << " " << m_y << endl;
}
};
int main()
{
double x_2,y_2,x_3,y_3,z_3;
std::cout << "Pls Input:" << endl;
std::cin >> x_2 >> y_2;
std::cin >> x_3 >> y_3 >> z_3;
Point_3 *p_2 = new Point_2();
Point_3 *p_3 = new Point_3();
p_2->getDis(x_2,y_2,0.0);
p_3->getDis(x_3,y_3,z_3);
std::cout << "******************Output*******************" << endl;
p_2->showPos();
p_3->showPos();
return 0;
}