⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 继承.txt

📁 钱能主编 C++程序设计教程(第一版) 该书习题的答案代码
💻 TXT
字号:
//**************************
//**      ch16_1.cpp      **
//**************************
#include <iostream.h>
#include <string.h>

class Advisor
{
	int noOfMeeting;
};

class Student
{
public:
	Student(char* pName="noName")
	{
		strncpy(name,pName,sizeof(name));
		name[sizeof(name)-1]='\0';
		average=semesterHours=0;
	}
	void addCourse(int hours,float grade)
	{
		average=(semesterHours*average+grade);
		semesterHours+=hours;
		average/=semesterHours;
	}
	int getHours() {return semesterHours;}
	float getAverage() {return average;}
	void display()
	{
		cout<<"name:"<<name<<"	"
			<<"hours:"<<semesterHours<<"	"
			<<"average:"<<average<<endl;
	}
protected:
	char name[40];
	int semesterHours;
	float average;
};

class GraduateStudent:public Student
{
public:
	getQualifier() {return qualifierGrade;}
protected:
	Advisor advisor;
	int qualifierGrade;
};

void main()
{
	Student ds("Lo lee undergrade");
	GraduateStudent gs;
	ds.addCourse(3,2.5);
	ds.display();
	gs.addCourse(3,3.0);
	gs.display();
}

//**************************
//**      ch16_2.cpp      **
//**************************
#include <iostream.h>

class Base
{
public:
	virtual void fn()
	{
		cout<<"In Base class."<<endl;
	}
};
class SubClass: public Base
{
public:
	virtual void fn()
	{
		cout<<"In SubClass."<<endl;
	}
};

void test(Base &b)
{
	b.fn();
}

void main()
{
	Base bc;
	SubClass sc;
	cout<<"Calling test(bc)"<<endl;
	test(bc);
	cout<<"Calling test(sc)"<<endl;
	test(sc);
}

//**************************
//**      ch16_3.cpp      **
//**************************
#include <iostream.h>
#include <math.h>

class Shape
{
public:
	Shape(double x,double y): xCoord(x),yCoord(y) {}
	virtual double Area() const{return 0.0;}
protected:
	double xCoord,yCoord;
};

class Circle:public Shape
{
public:
	Circle(double x,double y,double r):Shape(x,y),radius(r) {}
	virtual double Area() const {return 3.14*radius*radius;}
protected:
	double radius;
};

class Rectangle:public Shape
{
public:
	Rectangle(double x1,double y1,double x2,double y2):Shape(x1,y1),x2Coord(x2),y2Coord(y2) {}
	virtual double Area() const;
protected:
	double x2Coord,y2Coord;
};

double Rectangle::Area() const
{
	return fabs((xCoord-x2Coord)*(yCoord-y2Coord));
}
void fun(const Shape& sp)
{
	cout<<sp.Area()<<endl;
}

void main()
{
	Circle c(2.0,5.0,4.0);
	fun(c);

	Rectangle t(2.0,4.0,1.0,2.0);
	fun(t);
}

//**************************
//**      ch16_4.cpp      **
//**************************
#include <iostream.h>

class Base
{
public:
	virtual void fn(int x)
	{
		cout<<"In Base class, int x="<<x<<endl;
	}
};

class SubClass:public Base
{
public:
	virtual void fn(float x)
	{
		cout<<"In SubClass, float x="<<x<<endl;
	}
};

void test(Base &b)
{
	int i=1;
	b.fn(i);
	float f=2.0;
	b.fn(f);
}

void main()
{
	Base bc;
	SubClass sc;
	cout<<"Calling test(bc)"<<endl;
	test(bc);
	cout<<"Calling test(sc)"<<endl;
	test(sc);
}

//**************************
//**      ch16_5.cpp      ** could't pass the compilation
//**************************
#include <iostream.h>

class Base
{
public:
	virtual Base* afn()
	{
		cout<<"This is Base class."<<endl;
		return this;
	}
};

class SubClass:public Base
{
public:
	virtual SubClass* afn()
	{
		cout<<"This is SubClass."<<endl;
		return this;
	}
};

void test(Base& x)
{
	Base* b;
	b=x.afn();
}

void main()
{
	Base bc;
	SubClass sc;
	test(bc);
	test(sc);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -