基类指针指向子类对象
时间: 2023-06-28 20:16:09 浏览: 160
在 C++ 中,可以使用基类指针指向子类对象。这种情况下,如果基类中定义了虚函数,那么在通过基类指针调用该虚函数时,实际上会根据子类对象的类型来调用对应的重载函数,这就实现了多态性。
举个例子,假设有一个基类 Animal,其中定义了一个虚函数 sound(),然后有两个子类 Dog 和 Cat 继承自 Animal 并分别重载了 sound() 函数。那么在使用基类指针指向 Dog 或 Cat 对象时,可以通过调用 sound() 函数来触发多态性,实际上将会调用对应的子类的 sound() 函数。
示例代码如下:
```
class Animal {
public:
virtual void sound() {
cout << "This is the sound of an animal." << endl;
}
};
class Dog : public Animal {
public:
void sound() {
cout << "This is the sound of a dog." << endl;
}
};
class Cat : public Animal {
public:
void sound() {
cout << "This is the sound of a cat." << endl;
}
};
int main() {
Animal* animal1 = new Dog();
Animal* animal2 = new Cat();
animal1->sound(); // 输出 This is the sound of a dog.
animal2->sound(); // 输出 This is the sound of a cat.
return 0;
}
```
在上面的示例中,animal1 和 animal2 都是基类 Animal 的指针,但是它们分别指向了 Dog 和 Cat 的对象。当调用它们的 sound() 函数时,实际上会触发相应子类的函数,从而实现了多态性。
阅读全文