
一道简单C++问题,急!急!急!
#include<iostream>usingnamespacestd;classShape//定义抽象类{public:virtualdoubleArea()=0;};...
#include<iostream>
using namespace std;
class Shape //定义抽象类
{
public:
virtual double Area()=0;
};
class Triangle:public Shape //派生三角形类
{
public:
Triangle(double h,double w){H=h;W=w;}
double Area() const {return H*W*0.5;}
private:
double H,W;
};
class Rectangle:public Shape //派生矩形类
{
public:
Rectangle(double h,double w){H=h;W=w;}
double Area() const {return H*W;}
private:
double H,W;
};
void fun(Shape *pt)
{
pt->Area();
}
void main()
{
Shape *p;
Triangle san(5,6);
Rectangle ju(6,8);
p=&san;
fun(p);
p=&ju;
fun(p);
}
帮我看看这个题目怎么改?前提是不能改抽象类
请写出改正的后的答案,谢谢 展开
using namespace std;
class Shape //定义抽象类
{
public:
virtual double Area()=0;
};
class Triangle:public Shape //派生三角形类
{
public:
Triangle(double h,double w){H=h;W=w;}
double Area() const {return H*W*0.5;}
private:
double H,W;
};
class Rectangle:public Shape //派生矩形类
{
public:
Rectangle(double h,double w){H=h;W=w;}
double Area() const {return H*W;}
private:
double H,W;
};
void fun(Shape *pt)
{
pt->Area();
}
void main()
{
Shape *p;
Triangle san(5,6);
Rectangle ju(6,8);
p=&san;
fun(p);
p=&ju;
fun(p);
}
帮我看看这个题目怎么改?前提是不能改抽象类
请写出改正的后的答案,谢谢 展开
2个回答
展开全部
// 问题出在纯虚函数重载后函数必须一模一样
#include<iostream>
using namespace std;
class Shape //定义抽象类
{
public:
virtual double Area()=0;
};
class Triangle:public Shape //派生三角形类
{
public:
Triangle(double h,double w){H=h;W=w;}
double Area() {return H*W*0.5;}
private:
double H,W;
};
class Rectangle:public Shape //派生矩形类
{
public:
Rectangle(double h,double w){H=h;W=w;}
double Area() {return H*W;}
private:
double H,W;
};
void fun(Shape *pt)
{
pt->Area();
}
void main()
{
Shape *p;
Triangle san(5,6);
Rectangle ju(6,8);
p=&san;
fun(p);
p=&ju;
fun(p);
}
#include<iostream>
using namespace std;
class Shape //定义抽象类
{
public:
virtual double Area()=0;
};
class Triangle:public Shape //派生三角形类
{
public:
Triangle(double h,double w){H=h;W=w;}
double Area() {return H*W*0.5;}
private:
double H,W;
};
class Rectangle:public Shape //派生矩形类
{
public:
Rectangle(double h,double w){H=h;W=w;}
double Area() {return H*W;}
private:
double H,W;
};
void fun(Shape *pt)
{
pt->Area();
}
void main()
{
Shape *p;
Triangle san(5,6);
Rectangle ju(6,8);
p=&san;
fun(p);
p=&ju;
fun(p);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询