gpt4 book ai didi

c++ - 调用实际对象的方法而不是父类

转载 作者:太空狗 更新时间:2023-10-29 23:43:34 26 4
gpt4 key购买 nike

我有以下虚拟代码:

 #include <iostream>
#include <vector>

using namespace std;

class Parent {
public:
void printHello() {
cout << "Hello Parent" << endl;
}
};

class Child : public Parent {
public:
void printHello() {
cout << "Hello Child" << endl;
}
};


int main() {
vector<Parent*> list;
Child child;
list.push_back(&child);

list[0]->printHello();
}

Output: Hello Parent

我正在尝试创建从父类派生的类的对象列表。迭代它们并运行它们都继承和覆盖的方法。

我曾假设子类中的方法会覆盖父类中的方法。

我也尝试过使用 vector<Parent> 的方法而不是 vector<Parent*> .

结果是一样的。如何调用派生类的方法而不是父类的方法?

最佳答案

使用虚拟方法 - http://en.cppreference.com/w/cpp/language/virtual .阅读更多关于它们的信息 here .

#include <iostream>
#include <vector>

class Parent {
public:
// using virtual keyword
virtual ~Parent() = default;
virtual void printHello() const { std::cout << "Hello Parent" << std::endl; }
};

class Child : public Parent {
public:
// using override keyword though its not necessary
void printHello() const override { std::cout << "Hello Child" << std::endl; }
};


int main()
{
std::vector<Parent *> list;
Child child;
list.push_back(&child);

list[0]->printHello();
}

Output -

Hello Child

关于c++ - 调用实际对象的方法而不是父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47321550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com