虚基类的用法

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 class A
 6 {
 7 private:
 8     int a;
 9 public:
10     A(int x):a(x){}
11     void show() const
12     {
13         cout<<"a: "<<a<<endl;
14     }
15     ~A(){}
16 };
17 class B:virtual public A    //定义虚基类的用法
18 {
19 private:
20     int b;
21 public:
22     B(int x,int y):A(x),b(y){}//子类构造函数必须使用初始化列表(初始化列表在时间性能上比函数体内赋值更有优势,注意这里我用的词是赋值而不是初始化。)
23     void show() const       //show函数将父类的show()覆盖掉,const可以限制当前对象的内容不可改变
24     {
25         cout<<"b: "<<b<<endl;
26     }
27     ~B(){}
28 };
29 class C:virtual public A
30 {
31 private:
32     int c;
33 public:
34     C(int x,int z):A(x),c(z){}
35     void show() const
36     {
37         cout<<"c: "<<c<<endl;
38     }
39     ~C(){}
40 };
41 class D:public B, public C
42 {
43 private:
44     int d;
45 public:
46     D(int x,int y,int z,int h):A(x),B(x,y),C(x,z),d(h){}//首先注意构造函数的写法,直接或间接继承虚基类的所有派生类都必须在构造函数的初始化列表里列出对虚基类的初始化,但是,只有最远派生类的构造函数才调用虚基类的构造函数,也就是说,虚基类的成员(a)只有一份拷贝
47     void show() const
48     {
49         B::show();
50         C::show();
51         cout<<"d: "<<d<<endl;
52     }
53     ~D(){}
54 };
55 
56 int main()
57 {
58     D f(1,2,3,4);
59     f.show();
60     return 0;
61 }
View Code

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,虚基类是指继承自"collections.abc"模块中的"Container"类的类。"collections.abc"模块是Python标准库中的一个模块,用于定义集合数据类型的抽象基类。 虚基类是一种特殊的基类,它主要用于定义一些共同的接口和方法,而不实现具体的功能。其他类可以通过继承虚基类来共享这些接口和方法,并根据自己的需求实现具体的功能。虚基类的主要作用是提供一种规范和约束,使得继承自虚基类的类能够以一种统一的方式使用和操作。 在Python中,你可以使用"collections.abc"模块中定义的各种虚基类来实现不同类型的容器数据类型,例如"List"、"Set"、"Dict"等。这些虚基类定义了容器类型应该具备的一些共同的接口和方法,例如"__len__"用于返回容器的长度,"__getitem__"用于获取容器中的元素等。 继承自虚基类的类需要实现虚基类定义的接口和方法,并根据自己的需求进行相应的功能实现。通过继承虚基类,我们可以实现多态性,即不同类型的容器可以以一种统一的方式进行操作。 总结一下,Python中的虚基类是继承自"collections.abc"模块中定义的抽象基类,用于定义容器类型的接口和方法。继承自虚基类的类需要实现这些接口和方法,并根据自己的需求实现具体的功能。这样可以实现多态性,使不同类型的容器可以以一种统一的方式进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值