还有其他方法c++子类调用父类方法时,知道是哪个子类调用的
时间: 2023-09-03 14:12:47 浏览: 98
可以使用虚函数来实现子类调用父类方法时知道是哪个子类调用的。
具体实现方法是,在父类中声明一个虚函数,然后在每个子类中重写这个虚函数并添加标识子类的信息。例如:
```c++
class Animal {
public:
virtual void speak() {
std::cout << "I am an animal." << std::endl;
}
};
class Cat : public Animal {
public:
void speak() override {
std::cout << "I am a cat." << std::endl;
}
};
class Dog : public Animal {
public:
void speak() override {
std::cout << "I am a dog." << std::endl;
}
};
```
在这个例子中,Animal 类中声明了一个虚函数 speak(),Cat 和 Dog 类都重写了这个虚函数并添加了标识信息。当子类调用 speak() 方法时,父类中的 speak() 方法将被调用,但实际执行的是子类中重写的方法,因此可以知道是哪个子类调用了该方法。
```c++
int main() {
Animal* cat = new Cat();
Animal* dog = new Dog();
cat->speak(); // 输出 "I am a cat."
dog->speak(); // 输出 "I am a dog."
delete cat;
delete dog;
return 0;
}
```
在这个例子中,我们创建了一个指向 Cat 对象和一个指向 Dog 对象的 Animal 指针,然后分别调用了它们的 speak() 方法。由于 speak() 方法是虚函数,因此实际执行的是子类中重写的方法,并输出了相应的标识信息。
阅读全文