标签:
1、概念
继承:在定义一个新的类B时,如果该类与某个已知类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为一个派生类(也称子类)。
2、需要继承机制的例子 - 学生管理系统
所有的学生都有的共同属性:
所有的学生都有的共同方法(成员函数)
而不同的学生,又有各自不同的属性和方法
3、派生类的写法
class 派生类名 : public 基类名 { };
4、派生类对象的内存空间
派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积。
在派生类对象中,包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员
变量之前。如下代码示:
#include <iostream> #include <string.h> using namespace std; class CBase { int v1, v2; }; class CDerived : public CBase { int v3; }; int main() { printf("sizeof(CDerived) = %d\n", sizeof(CDerived)); return 0; }
输出的结果是:12
5、继承实例程序:学籍管理
#include <iostream> #include <string.h> using namespace std; class CStudent { private: string name; string id; // student number char gender; // ‘F‘ for female, ‘M‘ for male int age; public: void PrintInfo() { cout << "name: " << name << endl; cout << "id: " << id << endl; cout << "gender: " << gender << endl; cout << "age: " << age << endl; } void SetInfo(const string & name_, const string & id_, int age_, char gender_) { name = name_; id = id_; age = age_; gender = gender_; } string GetName() { return name; } }; class CUndergraduateStudnet : public CStudent { private: string department; // 学生所属的系 public: void QualifiedForBaoyan() { cout << "qualified for baoyan" << endl; } void PrintInfo() { CStudent::PrintInfo(); // 调用基类的PrintInfo cout << "Department:" << department << endl; } void SetInfo(const string &name_, const string &id_, int age_, char gender_, const string & department_) { CStudent::SetInfo(name_, id_, age_, gender_); // 调用基类的SetInfo department = department_; } }; int main() { CUndergraduateStudnet s2; s2.SetInfo("Harry Potter", "115200", 20, ‘M‘, "CS"); cout<< s2.GetName() << endl; s2.QualifiedForBaoyan(); s2.PrintInfo(); return 0; }
执行结果如下:
标签:
原文地址:http://www.cnblogs.com/aqing1987/p/4351932.html