为什么我的虚函数不赋值?
Why is my virtual function not assigning values?
我正在尝试使用虚函数来计算矩形和三角形的面积,如下所示:-
#include<iostream>
using namespace std;
class Shape{
public:
int width;
int height;
void get(){
cin>>width;
cin>>height;
}
virtual void area(){
cout<<"Calculates area";
}
};
class Triangle:public Shape{
void area(){
int a = height*width/2;
cout<<a<<endl;
}
};
class Rectangle:public Shape{
void area(){
int a = height*width;
cout<<a<<endl;
}
};
int main(){
Shape shapeObj;
shapeObj.get();
Shape *ptr;
Triangle trObj;
Rectangle rectObj;
ptr=&trObj;
ptr->area();
ptr=&rectObj;
ptr->area();
}
但我的程序返回 0 作为两个形状的面积。我认为三角形和矩形中没有分配宽度和高度的值class.Can有人告诉我哪里错了吗?
问题是宽度和高度赋给了shapeObj
变量
Shape shapeObj;
shapeObj.get();
但是您正在使用 trObj
和 rectObj
变量来计算面积。
Triangle trObj;
Rectangle rectObj;
ptr=&trObj;
ptr->area();
ptr=&rectObj;
ptr->area();
试试这个
int main()
{
Triangle trObj;
trObj.get();
Shape* ptr=&trObj;
ptr->area();
Rectangle rectObj;
rectObj.get();
ptr=&rectObj;
ptr->area();
}
当然,因为您有两个变量并且调用了 get
两次,所以此代码将请求宽度和高度两次。如果这不是你想要的,那么仔细考虑你如何在这个程序中做 I/O,以及如何设计得更好(提示:在 main 中做 I/O 并使用参数和 return 值在你的 类).
我正在尝试使用虚函数来计算矩形和三角形的面积,如下所示:-
#include<iostream>
using namespace std;
class Shape{
public:
int width;
int height;
void get(){
cin>>width;
cin>>height;
}
virtual void area(){
cout<<"Calculates area";
}
};
class Triangle:public Shape{
void area(){
int a = height*width/2;
cout<<a<<endl;
}
};
class Rectangle:public Shape{
void area(){
int a = height*width;
cout<<a<<endl;
}
};
int main(){
Shape shapeObj;
shapeObj.get();
Shape *ptr;
Triangle trObj;
Rectangle rectObj;
ptr=&trObj;
ptr->area();
ptr=&rectObj;
ptr->area();
}
但我的程序返回 0 作为两个形状的面积。我认为三角形和矩形中没有分配宽度和高度的值class.Can有人告诉我哪里错了吗?
问题是宽度和高度赋给了shapeObj
变量
Shape shapeObj;
shapeObj.get();
但是您正在使用 trObj
和 rectObj
变量来计算面积。
Triangle trObj;
Rectangle rectObj;
ptr=&trObj;
ptr->area();
ptr=&rectObj;
ptr->area();
试试这个
int main()
{
Triangle trObj;
trObj.get();
Shape* ptr=&trObj;
ptr->area();
Rectangle rectObj;
rectObj.get();
ptr=&rectObj;
ptr->area();
}
当然,因为您有两个变量并且调用了 get
两次,所以此代码将请求宽度和高度两次。如果这不是你想要的,那么仔细考虑你如何在这个程序中做 I/O,以及如何设计得更好(提示:在 main 中做 I/O 并使用参数和 return 值在你的 类).