听说多继承有一些风险,其他高级语言例如Java c#等只支持基本的(不知道Python怎么说)。
看见了一个例子可以很好的理解多继承是什么意思以及大概的用法:
class Person { public: Person(std::string theName); void introduce(); protected: std::string name; }; class Teacher : public Person { public: Teacher(std::string theName, std::string theClass); void teach(); void introduce(); protected: std::string classes; }; class Student : public Person { public: Student(std::string theName, std::string theClass); void attendClass(); void introduce(); protected: std::string classes; }; class TeachingStudent : public Student, public Teacher { public: TeachingStudent(std::string theName, std::string classTeaching, std::string classAttending); void introduce(); };
老师类和学生类都是人的子类,助教则既是老师类辅导学生,同时自身也是学生类。
//用构造器初始化:
TeachingStudent::TeachingStudent(std::string theName, std::string classTeaching, std::string classAttending) : Teacher(theName, classTeaching), Student(theName, classAttending) { }
里面的introduce方法就可以调用两个类中的参数和方法了
void TeachingStudent::introduce() { std::cout << "大家好,我是" << Student::name << "。我教" << Teacher::classes << ", "; std::cout << "同时我在" << Student::classes << "学习。\n\n"; }
同时也可以这样写:
void TeachingStudent::introduce() { Teacher::introduce(); Student::introduce(); }