gpt4 book ai didi

C++/多态性/虚函数/为什么我的子类的函数没有被调用?

转载 作者:行者123 更新时间:2023-11-30 01:50:49 25 4
gpt4 key购买 nike

<分区>

我环顾四周,大多数问题都涉及为什么要使用 virtual、什么是多态性等等。我的程序有问题,我想知道为什么子函数没有被调用,以及如何在这种情况下调用子函数。

我可以模拟我的问题:

#include <string>
#include <iostream>
#include <vector>

class BaseA {
public:
BaseA(const std::string &n)
: name(n)
{
}

virtual void print() const
{
std::string str("");
str += name;
std::cout << str << std::endl;
}

protected:
std::string name;
};

class BaseB : public BaseA {
public:
BaseB(const std::string &n, const std::string &v)
: BaseA(n), value(v)
{
}

void print() const
{
std::string str("");
str += name;
str += ' ';
str += value;
std::cout << str << std::endl;
}

private:
std::string value;
};

int main() {
std::vector<BaseA> vec;
vec.push_back(BaseA("cat"));
vec.push_back(BaseB("cat", "kitten"));

for(BaseA &obj : vec)
obj.print();

return 0;
}


为什么输出是:cat cat?

如何使用 BaseB::print() 将输出更改为“cat cat kitten”?

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