[C++面向对象程序设计]第六章 多态性与虚函数

3.(1)

#include<iostream>
using namespace std;
class Point
{
public:
	Point(int a,int b):x(a),y(b){}
	~Point(){cout<<"executing Point destructor"<<endl;}
private:
	int x;
	int y;
};

class Circle:public Point
{
public:
	Circle(int a,int b,int c):Point(a,b),radus(c){}
	~Circle(){cout<<"executing Circle destructor"<<endl;}
private:
	int radus;
};

int main()
{
	Point *p=new Circle(1,2);
	delete p;
	return 0;
}

(2)

#include<iostream>
using namespace std;
class Point
{
public:
	Point(){}
	~Point(){cout<<"executing Point destructor"<<endl;}
};

class Circle:public Point
{
public:
	Circle(){}
	~Circle(){cout<<"executing Circle destructor"<<endl;}
private:
	int radus;
};

int main()
{
	Circle *p=new Circle;
	delete p;
	return 0;
}

(3)

#include<iostream>
using namespace std;
class Point
{
public:
	Point(){}
	virtual ~Point(){cout<<"executing Point destructor"<<endl;}
};

class Circle:public Point
{
public:
	Circle(){}
	virtual ~Circle(){cout<<"executing Circle destructor"<<endl;}
private:
	int radus;
};

int main()
{
	Point *p=new Circle;
	delete p;
	return 0;
}

4.

#include<iostream>
using namespace std;
class Shape
{
public:
	Shape(){}
	virtual void printArea(){}

};

class Circle:public Shape 
{
public:
	Circle(int r):radus(r){}
	virtual void printArea(){float v=radus*radus*3.14;cout<<v<<endl;}
private:
	int radus;
};

class Rectangle:public Shape 
{
public:
	Rectangle(int w,int l):width(w),long1(l){}
	virtual void printArea(){float v=width*long1;cout<<v<<endl;}
private:
	int width;
	int long1;
};

class Triangle:public Shape 
{
public:
	Triangle(int h,int w):high(h),width(w){}
	virtual void printArea(){float v=width*high/2;cout<<v<<endl;}
private:
	int high;
	int width;
};

int main()
{
	Circle c(3);
	Rectangle r(2,3);
	Triangle t(2,3);
	Shape *p=&c;
	p->printArea();
	p=&r;
	p->printArea();
	p=&t;
	p->printArea();
	return 0;
}

5.

#include<iostream>
using namespace std;
class Shape
{
public:
	Shape(){}
	virtual double printArea()const=0;

};

class Circle:public Shape 
{
public:
	Circle(int r):radus(r){}
	virtual double printArea()const{float v=radus*radus*3.14;return (v);}
private:
	int radus;
};

class Rectangle:public Shape 
{
public:
	Rectangle(int w,int l):width(w),long1(l){}
	virtual double printArea()const{float v=width*long1;return (v);}
private:
	int width;
	int long1;
};

class Triangle:public Shape 
{
public:
	Triangle(int h,int w):high(h),width(w){}
	virtual double printArea()const{float v=width*high/2;return (v);}
private:
	int high;
	int width;
};

猜你喜欢

转载自blog.csdn.net/daisy_fight/article/details/80195545