继续
继续基本语法
提要点:class 子类 : 继续方式 父类
- //继承语法: class 自己定义的类(子类):继承方式 父类
- #include<iostream>
- using namespace std;
- class Person
- {
- public:
- void body()
- {
- cout<<"Hello pretty girl"<<"\n";
- }
- void age1()
- {
- cout<<"19"<<"\n";
- }
- };
- class Alaso_shuang : public Person
- {
- public:
- void voice()
- {
- cout<<"interesting to listen"<<"\n";
- }
- };
- void test()
- {
- Alaso_shuang Alaso;
- Alaso.age1();
- Alaso.body();
- Alaso.voice();
- }
- int main()
- {
- test();
- return 0;
- }
复制代码
继续方式
提要点:
1.继续方式分为:公共继续(public)、掩护继续(protected)、私有继续(private)
2.当子类以共有继续 继续父类时,父类全部的对象(除了private)都是可以以共有继续形式访问
2.当子类以 掩护继续 继续父类时,子类全部继续对象均以掩护继续的形式出现,并且表里不能访问
3.当子类以 私有继续 继续父类时,子类全部继续对象均以私有继续的形式出现
- #include<iostream>
- using namespace std;
- class F
- {
- public:
- int a;
- protected:
- int b;
- private:
- int c;
- };
- class F1
- {
- public:
- int a;
- protected:
- int b;
- private:
- int c;
- };
- class F2
- {
- public:
- int a;
- protected:
- int b;
- private:
- int c;
- };
- class son : public F
- {
- public:
- void f()
- {
- a = 10;//父类中公共权限成员拿到手了
- }
- protected:
- void f1()
- {
- b = 20;
- }
- // private:
- // void f3()
- // {
- // c = 1;//报错啦
- // }
- };
- class son1 : protected F1
- {
- protected:
- void f1()
- {
- a = 10;
- b = 40;
- //c = 90;//继续报错,说明父类隐私不允许访问
- }
- };
- class son2 : private F2
- {
- private:
- void f5()
- {
- a = 100;
- b = 300;
- }
- };
- void test01()
- {
- son1 s;
- }
- int main()
- {
- test01();
- return 0;
- }
复制代码
继续中对象模型
提要点:父类中全部对象均会被子类继续
- #include<iostream>
- using namespace std;
- class f
- {
- public:
- int a;
- protected:
- int b;
- private:
- int c;
- };
- class son1:public f
- {
- int a;
- };
- void solve()
- {
- son1 s;
- cout<<"sizeof's value : "<< sizeof(s);
- }
- int main()
- {
- solve();
- //答案是16,说明父类所有的成员都继承在了子类身上
- return 0;
- }
复制代码
继续同名成员处理方式
提要点:
1.访问子类同名成员(直接访问即可)
2.访问父类同名成员(需要加作用域)
- #include<iostream>
- using namespace std;
- class F
- {
- public:
- F()
- {
- a = 10000;
- }
- public:
- int a;
- };
- class son1 : public F
- {
- public:
- son1()
- {
- a = 2000000;
- }
-
- public:
- int a;
- };
- void solve()
- {
- son1 s;
- cout<<s.a<<"\n";
- F f;
- cout<<f.F::a<<"\n";//父类添加作用域
- }
- int main()
- {
- solve();
- return 0;
- }
复制代码
多继续
提要点:语法:子类:public 父类1,public 父类2
(不建议利用该格式,会引来麻烦)
- #include<iostream>
- using namespace std;
- class F1
- {
- public:
- F1()
- {
- m_A = 100000;
- }
- public:
- int m_A;
- };
- class F2
- {
- public:
- F2()
- {
- m_B = 200000;
- }
-
- public:
- int m_B;
- };
- class children : public F1,public F2//继承两个父类
- {
- public:
- int c_M;
- int d_M;
- };
- void test()
- {
- children C;
- cout<<sizeof(C)<<"\n";
- cout<<C.m_A<<"\n";
- cout<<C.m_B<<"\n";
- //若是父类成员名称相同,就按照继承同名成员方式处理,直接加作用域即可
- }
- int main()
- {
- test();
- return 0;
- }
复制代码
菱形继续
提要点:
1.菱形继续会导致所指对象的属性不明白,还会浪费空间
2.办理菱形继续的办法:虚继续,在父类前加一个 virtual即可
一样寻常我们不会写菱形继续的形式,在此也不做代码解释了哈哈哈哈哈
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |