c++多态方面的子类构造函数传入父类指针实例
时间: 2023-07-26 21:15:54 浏览: 143
C++类继承之子类调用父类的构造函数的实例详解
在C++中,派生类的构造函数可以传入基类指针或引用,用于初始化基类部分。这种方法可以在实现多态时非常有用,因为它允许我们在派生类构造函数中调用基类的虚函数。
下面是一个简单的示例,其中定义了一个基类Animal和一个派生类Dog,派生类构造函数通过传入基类指针实例来初始化基类部分:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() {
cout << "Animal speak!" << endl;
}
};
class Dog : public Animal {
public:
Dog(Animal* animal) {
animal->speak();
}
void speak() {
cout << "Dog speak: wang wang!" << endl;
}
};
int main() {
Animal animal;
Dog dog(&animal);
return 0;
}
```
输出结果如下:
```
Animal speak!
Dog speak: wang wang!
```
可以看到,在Dog构造函数中传入了一个Animal指针实例,然后通过该指针调用了基类的虚函数speak()。这种方法可以在实现多态时非常有用,因为它允许我们在派生类构造函数中调用基类的虚函数,从而实现更加灵活和可扩展的代码。
阅读全文