#include<iostream>
using namespace std;
class shape
{
public:
virtual int area();
shape()
{
cout<<"调用shape构造函数"<<endl;
}
~shape()
{
cout<<"调用shape析构函数"<<endl;
}
};
class rectangle:
public shape
{
private:
int x;
int y;
public:
void in()
{
cout<<"请输入矩形长宽"<<endl;
cin>>x>>y;
}
virtual int area();
rectangle()
{
cout<<"调用rectangle构造函数"<<endl;
}
~rectangle()
{
cout<<"调用rectangle析构函数"<<endl;
}
};
class circle:
public shape
{
private:
float r;
public:
void in()
{
cout<<"请输入圆形的半径"<<endl;
cin>>r;
}
virtual int area();
circle()
{
cout<<"调用circle构造函数"<<endl;
}
~circle()
{
cout<<"调用circle析构函数"<<endl;
}
};
class square:
public rectangle
{
private:
int a;
public:
void in()
{
cout<<"请输入方形的边长"<<endl;
cin>>a;
}
virtual int area();
square()
{
cout<<"调用square构造函数"<<endl;
}
~square()
{
cout<<"调用square析构函数"<<endl;
}
};
int main(void)
{
circle c;
rectangle r;
square s;
c.in();
r.in();
s.in();
cout<<"圆形面积"<<c.area()<<endl;
cout<<"矩形面积"<<r.area()<<endl;
cout<<"方形面积"<<s.area()<<endl;
}
int rectangle::area()
{
return x*y;
}
int circle::area()
{
return 3.14*r*r;
}
int square::area()
{
return a*a;
}
编译时报错信息为:
C:\Users\Administrator\AppData\Local\Temp\ccLhjdDA.o In function shape::shape()':
vtable for shape'
10 C:\Users\Administrator\Desktop\未命名2.cpp undefined reference to
C:\Users\Administrator\AppData\Local\Temp\ccLhjdDA.o In function shape::~shape()':
vtable for shape'
15 C:\Users\Administrator\Desktop\未命名2.cpp undefined reference to
C:\Users\Administrator\Desktop\collect2.exe [Error] ld returned 1 exit status