mirror of
https://github.com/Light-City/CPlusPlusThings.git
synced 2026-04-14 02:19:49 +08:00
support bazel complie this project and format code.
This commit is contained in:
39
practical_exercises/10_day_practice/day5/virtual/init.cpp
Normal file
39
practical_exercises/10_day_practice/day5/virtual/init.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
/* 派生类初始化.cpp */
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
class A {
|
||||
int a;
|
||||
|
||||
public:
|
||||
A(int x) {
|
||||
a = x;
|
||||
cout << "Virtual Bass A..." << endl;
|
||||
}
|
||||
};
|
||||
class B : virtual public A {
|
||||
public:
|
||||
B(int i) : A(i) { cout << "Virtual Bass B..." << endl; }
|
||||
};
|
||||
class C : virtual public A {
|
||||
int x;
|
||||
|
||||
public:
|
||||
C(int i) : A(i) {
|
||||
cout << "Constructing C..." << endl;
|
||||
x = i;
|
||||
}
|
||||
};
|
||||
class ABC : public C, public B {
|
||||
public:
|
||||
//虚基类由最终派生类初始化
|
||||
ABC(int i, int j, int k)
|
||||
: C(i), B(j), A(i) // L1,这里必须对A进行初始化
|
||||
{
|
||||
cout << "Constructing ABC..." << endl;
|
||||
}
|
||||
};
|
||||
int main() {
|
||||
ABC obj(1, 2, 3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user