读书人

关于虚函数的编译异常

发布时间: 2012-05-29 12:16:00 作者: rapoo

关于虚函数的编译错误,请教大家

C/C++ code
#include<iostream.h>//Shapeclass Shape{public:    virtual void calculate_area() ;    virtual void display_area() const =0;    virtual ~Shape(){};};//Circleclass Circle:public Shape{public:    Circle(float r1=0,float area_circle1=0):r(r1),area_circle(area_circle1){};    void calculate_area() ;    void display_area() const ;    friend istream& operator >>(istream&,Circle&);private:    float r;    float area_circle;};void Circle::calculate_area(){    area_circle=3.14*r*r;};void Circle::display_area() const {    cout <<"r:" <<r <<"; area:" <<area_circle <<endl;};istream& operator >>(istream &input,Circle &circle){    cout <<"r:";    input >>circle.r;    return input;};//main functionint main(){    Shape *p=NULL;    Circle circle;    cin>>circle;    p=&circle;    p->calculate_area();    p->display_area();    return 0;}

想问下这个程序错在哪里,找了很久不知道,请教大侠,

[解决办法]
class Shape
{
public:
virtual void calculate_area(){} ;
[解决办法]
探讨

class Shape
{
public:
virtual void calculate_area(){} ;

[解决办法]
C/C++ code
#include <iostream>using namespace std;//Shapeclass Shape{public:    virtual void calculate_area(){;} ;    virtual void display_area() const {;};    virtual ~Shape(){;};};//Circleclass Circle:public Shape{public:    Circle(float r1=0,float area_circle1=0):r(r1),area_circle(area_circle1){};    void calculate_area() ;    void display_area() const ;    friend istream& operator >>(istream&,Circle&);private:    float r;    float area_circle;};void Circle::calculate_area(){    area_circle=3.14*r*r;};void Circle::display_area() const{    cout <<"r:" <<r <<"; area:" <<area_circle <<endl;};istream& operator >>(istream &input,Circle &circle){    cout <<"r:";    input >>circle.r;    return input;};//main functionint main(){    Shape *p=NULL;    Circle circle;    cin>>circle;    p=&circle;    p->calculate_area();    p->display_area();    return 0;}
[解决办法]
C/C++ code
//Shapeclass Shape{public:    // virtual void calculate_area() ; 这个仅有声明,木有实现,同时它又不是纯虚函数,故而错    virtual void calculate_area() = 0;  // 可以将上面的一句改为这一句    virtual void display_area() const =0;    virtual ~Shape(){};}; 

读书人网 >C++

热点推荐