(C++)实验报告六:继承与派生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验6 继承与派生

一、实验目的

1.理解继承与派生、单继承与多继承的概念;

2.理解基类与派生类的定义及使用方法,派生类对象的定义与初始化方法;

3.理解继承与派生过程中,把派生类作为基类构成类族的概念及虚基类的概念。

二、实验环境

一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。

三、实验内容

1、由在校人员类(Person)作为基类派生出学生类(Student):

实验步骤:

#include

#include

using namespace std;

class Person{

public:

Person(int i,char *n, char s, int a){

ID=i;

name=n;

sex=s;

age=a;

};

int getID(){

return ID;

}

void show(){

cout<<"ID: "<

cout<<"name : "<

cout<<"sex: "<

cout<<"age: "<

}

private:

int ID;

string name;

char sex;

int age;

};

class Student:public Person{

public:

Student(int i,char *n,char s,int a,float m,float p,float e,float c):Person(i,n,s,a){

math=m;

physical=p;

english=e;

cpp=c;

total=math+physical+english+cpp;

}

void show(){

Person::show();

cout<<"math: "<

cout<<"physical: "<

cout<<"english: "<

cout<<"C++: "<

cout<<"total: "<

}

private:

float math,physical,english,cpp,total;

};

void main(){

Person p1(1,"张帅",'M',22);

p1.show();

cout<

Student s1(9901,"林维",'S',21,65,70,75,88);

s1.show();

}

实验结果:

2、由学生类、课程类作为基类,共同派生出选课类。

实验步骤:

#include

#include

using namespace std;

class Student{

public:

Student(int i,char *n, char s, int a){

No=i;

Name=n;

Sex=s;

Age=a;

};

void show(){

cout<<"No: "<

cout<<"Name : "<

cout<<"Sex: "<

cout<<"Age: "<

}

private:

int No;

string Name;

char Sex;

int Age;

};

class Lesson{

public:

Lesson(int no,char *name,int hour){

Cno=no;

Cname=name;

Chour=hour;

}

void show(){

cout<<"Cno: "<

cout<<"Cname: "<

cout<<"Chour: "<

}

private:

int Cno; string Cname; int Chour;

};

class SL:public Student,public Lesson{

public:

SL(int i,char *n,char s,int a,int no,char *name,int hour, int score):Student(i,n,s,a),Lesson(no,name,hour){ Score=score;

}

void show(){

Student::show();

Lesson::show();

cout<<"Score: "<

}

private:

int Score;

};

void main(){

SL s1(25,"MrLin",'S',25,911,"c++",25,100);

s1.show();

}

实验结果:

3、由二维坐标点类Point作为基类派生出圆类Circle;再由圆类Circle作为基类派生出圆柱体类Cylinder。

实验步骤:

#include

#include

using namespace std;

class Point {

public:

Point(int xx=0, int yy=0){

x=xx;

y=yy;

}

int getX() { return x; }

int getY() { return y; }

void show() {cout<<"("<

protected:

int x,y;

};

class Circle:virtual public Point{

public:

Circle(int xx=0,int yy=0,float r=1):Point(xx,yy){

radius=r;

}

int getR() {return radius;}

void show(){

cout<<"圆心坐标:";

Point::show();

cout<<"圆半径:"<

}

protected:

float radius;

};

class cylinder:public Circle{

public:

cylinder(int xx=0,int yy=0,float r=1,float h=2):Point(xx,yy),Circle(r){

height=h;

}

int getH() {return height;}

void show(){

Circle::show();

cout<<"圆柱体高度:"<

}

private:

float height;

};

int main(){

Point p1(1,2);

p1.show();

cout<

相关文档
最新文档