关于虚函数的编译错误,请教大家
- 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(){} ;
[解决办法]
[解决办法]
- 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(){};};