【发布时间】:2013-11-22 18:18:55
【问题描述】:
好的,所以我的 .exe 给了我一个零,所以我猜测数据类型没有正确转换。抱歉,我是 c++ 新手,来自 c。每当我在 c 中遇到这个问题时,通常都会被截断,但我无法找出我做错了什么。
//shape.h
#ifndef SHAPE_H
#define SHAPE_H
class shape
{
public:
shape();
virtual float area()=0;
};
#endif SHAPE_H
//shape.cpp
#include <iostream>
#include "shape.h"
using namespace std;
shape::shape()
{
}
//triangle.h
#include"shape.h"
class triangle: public shape
{
public:
triangle(float,float);
virtual float area();
protected:
float _height;
float _base;
};
//triangle.cpp
#include "triangle.h"
triangle::triangle(float base, float height)
{
base=_base;
height=_height;
}
float triangle::area()
{
return _base*_height*(1/2);
}
//main.cpp
#include <iostream>
#include "shape.h"
#include "triangle.h"
using namespace std;
int main()
{
triangle tri(4,2);
cout<<tri.area()<<endl;
return 0;
}
由于某种原因,我在我的 exe 中得到了一个零,而我应该得到一个 4。
【问题讨论】:
-
这:
(1/2)的计算结果为零。它的整数除法。试试 1.0/2.0。
标签: c++ class inheritance polymorphism virtual-functions