接下来我们来讲几个例子!
所有的学生都有的共同属性:
姓名
学号
性别
成绩
所有的学生都有的共同方法(成员函数):
是否该留级
是否该奖励
而不同的学生,又有各自不同的属性和方法
研究生
导师
系
大学生
系
中学生
竞赛特长加分

- class 派生类名:public 基类名
- {
-
- };
然后给大家看一个派生的小例子:
- #include
- using namespace std;
- class CStudent { //学生类
- private:
- string sName; //姓名
- int nAge; //年龄
- public:
- bool IsThreeGood() { }; //是不是三好学生
- void SetName( const string & name ) //给这个学生一个名字
- { sName = name; } //赋值
- //......
- };
- class CUndergraduateStudent: public CStudent { //大学生类
- private:
- int nDepartment; //他是什么类的
- public:
- bool IsThreeGood() { /*......*/ }; //覆盖(都有这个函数)
- bool CanBaoYan() { /*....*/ }; //有没有保研的资格
- }; // 派生类的写法是:类名: public 基类名
- class CGraduatedStudent:public CStudent { //研究生
- private:
- int nDepartment; //他是什么类的
- char szMentorName[20]; //他的导师是谁?
- public:
- int CountSalary() { /*...*/ }; //当助教的工资是多少?
- };
- class CBase
- {
- int v1,v2;
- };
- class CDerived:public CBase
- {
- int v3;
- };
- #include
- #include
- using namespace std;
- class CStudent {
- private:
- string name;
- string id; //学号
- char gender; //性别,'F'代表女,'M'代表男
- int age;
- public:
- void PrintInfo();
- void SetInfo( const string & name_,const string & id_,
- int age_, char gender_ );
- string GetName() { return name; }
- };
- class CUndergraduateStudent:public CStudent
- {//本科生类,继承了CStudent类
- private:
- string department; //学生所属的系的名称
- public:
- void QualifiedForBaoyan() { //给予保研资格
- cout << "qualified for baoyan" << endl;
- }
- void PrintInfo() {
- CStudent::PrintInfo(); //调用基类的PrintInfo
- cout << "Department:" << department <
- }
- void SetInfo( const string & name_,const string & id_,int age_,char gender_ ,const string & department_) {
- CStudent::SetInfo(name_,id_,age_,gender_); //调用基类的SetInfo
- department = department_;
- }
- };
- void CStudent::PrintInfo()
- {
- cout << "Name:" << name << endl;
- cout << "ID:" << id << endl;
- cout << "Age:" << age << endl;
- cout << "Gender:" << gender << endl;
- }
- void CStudent::SetInfo( const string & name_,const string & id_, int age_,char gender_ )
- {
- name = name_;
- id = id_;
- age = age_;
- gender = gender_;
- }
- int main()
- {
- CUndergraduateStudent s2;
- s2.SetInfo("Harry Potter", "18829212",19,'M',"Computer Science");
- cout << s2.GetName() <<" ";
- s2.QualifiedForBaoyan ();
- s2.PrintInfo ();
- return 0;
- }
课后习题:如果多种事物,有一些共同的特点,又有一些各自 不同的特点,如何编写类来代表这些事物比较合适?
A) 为每种事物独立编写一个类,各类之间互相无关
B) 写一个类代表其中一种事物,代表其他事物的类, 都从这个类派生出来
C) 概括所有事物的共同特点,写一个基类。然后为每种事物写一个类,都从基类派生而来
D) 一共就写一个类,包含所有事物的所有特点,然后用一个成员变量作为标记来区分不同种类的事物
想要回答的小伙伴可以在评论区留言!