【c++】面向对象三大特性之——继承(菱形继承详细讲解)

06-02 274阅读

小编个人主页详情 public: void Print() { cout protected: int _stuid = 111111; }; class teacher :public person { protected: int _teaid = 222222; }; int main() { student s; teacher t; s.Print(); t.Print(); return 0; } protected: int _stuid = 111111; }; public: void Print() { cout public: void fun() { _age = 20; Print(); } protected: int _stuid = 111111; }; int main() { student s; s.fun(); s.Print(); return 0; } public: void Print() { cout public: void fun() { _age = 21; Print(); } protected: int _stuid = 111111; }; int main() { student s; s.fun(); return 0; } public: int _age = 18; string _name = "xiaowang"; }; class student :public person { protected: int _stuid = 111111; }; int main() { person p; student s; s._age = 20; s._name = "zhangshan"; p = s; person* ptr = &s; person& rp = s; return 0; } public: void fun() { cout public: void fun() { person::fun(); cout student s; s.fun(); return 0; } public: Person(const char* name = "peter") : _name(name) { cout public: Student(const char* name,int id) :_id(id) { cout Student s("zhangshan", 111111); return 0; } public: Person(const char* name) : _name(name) { cout public: Student(const char* name,int id) :Person(name) ,_id(id) { cout Student s("zhangshan", 111111); return 0; } public: Person(const char* name = "peter") : _name(name) { cout cout public: Student(const char* name,int id) :Person(name) ,_id(id) { cout cout Student s("zhangshan", 111111); Student s1(s); return 0; } public: Person(const char* name = "peter") : _name(name) { cout cout cout public: Student(const char* name,int id) :Person(name) ,_id(id) { cout cout cout Person::operator=(s);//这里必须使用基类::operator=的方式进行调用 _id = s._id; //如果直接调用operaotr=会产生一直去调用派生类的 } //operator=引发无穷递归调用,导致栈溢出 return *this; } protected: int _id; }; int main() { Student s("zhangshan", 111111); Student s1(s); Student s2("lisi", 222222); s1 = s2; return 0; } public: Person(const char* name = "peter") : _name(name) { cout cout cout cout public: Student(const char* name,int id) :Person(name) ,_id(id) { cout cout cout Person::operator=(s); _id = s._id; } return *this; } ~Student() { cout Student s("zhangshan", 111111); Student s1(s); Student s2("lisi", 222222); s1 = s2; return 0; } friend void Print(const Person& p); public: protected: int _age = 18; private: string _name = "xiaowang"; }; void Print(const Person& p) { cout friend void Print(const Person& p); public: protected: int _stuid = 111111; }; int main() { Student s; Person p; Print(p); Print(s); return 0; } public: Person() { _count++; } static int _count; }; int Person::_count = 0; class Student :public Person { public: Student() {} }; int main() { Person p; Student s1; Student s2; Student s3; cout public: int _a; }; class B : public A { public: int _b; }; class C :public B { public: int _c; }; int main() { C c; c._a = 1; c._b = 2; c._c = 3; return 0; } public: int _a; }; class B { public: int _b; }; class C :public A, public B { public: int _c; }; int main() { C c; c._a = 1; c._b = 2; c._c = 3; return 0; } public: int _a; }; class B: public A { public: int _b; }; class C : public A { public: int _c; }; class D :public B, public C { public: int _d; }; int main() { D d; return 0; } D d; d.B::_a = 1; d.C::_a = 2; return 0; } public: int _a; }; class B : virtual public A { public: int _b; }; class C : virtual public A { public: int _c; }; class D :public B, public C { public: int _d; }; int main() { D d; d.B::_a = 1; d.C::_a = 2; d._a = 3; return 0; } }; class B:public A//B和A是继承关系,B继承了A {}; class C//A和C是组合关系,C组合了A { private: A _a; };

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码