请给出C++中钻石继承的实例代码
时间: 2024-02-09 19:11:06 浏览: 87
下面是一个简单的钻石继承的实例代码:
```
#include <iostream>
using namespace std;
class Person {
public:
void greet() {
cout << "Hello, I am a person." << endl;
}
};
class Student : virtual public Person {
public:
void learn() {
cout << "I am a student and I am learning." << endl;
}
};
class Employee : virtual public Person {
public:
void work() {
cout << "I am an employee and I am working." << endl;
}
};
class Manager : public Student, public Employee {
public:
void manage() {
cout << "I am a manager and I am managing." << endl;
}
};
int main() {
Manager m;
m.greet();
m.learn();
m.work();
m.manage();
return 0;
}
```
在这个例子中,我们有一个基类Person和两个派生类Student和Employee,它们都继承自Person类。然后我们定义了一个Manager类,它继承自Student和Employee类,从而实现了钻石继承。最后在主函数中,我们创建了一个Manager对象m并调用了它的成员函数。由于Manager类继承了Student和Employee类,所以它可以调用这些类的成员函数。同时,由于Person类使用了虚继承,Manager类只继承了一个Person对象,避免了多次继承同一个Person对象导致的问题。
阅读全文