p35.cpp

来自「《C++编程指南(续编)》的一些程序源代码」· C++ 代码 · 共 95 行

CPP
95
字号
#include <fstream.h>
#include <string.h>

class Student
{
public:
	Student(char * pLN,char * pFN,
		int nGrd,unsigned long ulId);
	virtual ~Student();
	
	virtual void display(ostream& out)const;
protected:
	char * pLName;
	char * pFName;
	int nGrade;
	unsigned long ulID;
};

Student::Student(char * pLN,char * pFN,
				 int nGrd,unsigned long ulId)
{
	pLName=new char[strlen(pLN)+1];
	strcpy(pLName,pLN);
	
	pFName=new char[strlen(pFN)+1];
	strcpy(pFName,pFN);
	
	nGrade=nGrd;
	ulID=ulId;
}

Student::~Student()
{
	delete pLName;
	delete pFName;
}

void Student::display(ostream& out)const
{
	out<<pLName<<","<<pFName<<"-"<<ulID<<"(Grade"<<nGrade<<")";
}

ostream& operator<<(ostream& out,const Student& s)
{
	s.display(out);
	return out;
}

class BandStudent:public Student
{
public:
	BandStudent(char * pLN,char * pFN,
		int nGrd,unsigned long ulId,char * pInstrument);
	~BandStudent();
	
	virtual void display(ostream& out)const;
protected:
	char * pszInstrument;
};

BandStudent::BandStudent(char * pLN,char * pFN,
						 int nGrd,unsigned long ulId,
						 char * pInstrument):
Student(pLN,pFN,nGrd,ulId)
{
	pszInstrument=new char[strlen(pInstrument)+1];
	strcpy(pszInstrument,pInstrument);
}
BandStudent::~BandStudent()
{
	delete pszInstrument;
}

void BandStudent::display(ostream& out)const
{
	Student::display(out);
	out<<"["<<pszInstrument<<"]";
}

void detention(ostream& out,Student& sStudent)
{
	out<<"Detention student:"<<sStudent<<"\n";
}
int main(int,char**)
{
	ofstream out("ofile.txt");

	Student sKinsey("Davis","Kinsey",6,123456789L);
	detention(out,sKinsey);

	BandStudent sBen("Brown","Ben",6,234567890L,"Trombone");
	detention(out,sBen);

	return 0;
}

⌨️ 快捷键说明

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