gpt4 book ai didi

相同类层次结构的 C++ 数组

转载 作者:行者123 更新时间:2023-11-27 22:49:40 27 4
gpt4 key购买 nike

根据我的书,如果我想创建一个不在同一个类但在同一个类层次结构中的对象数组,我需要使用指针:

class text
{
public:
void write(string text);
void show();
private:
string texte;
};

void text::write(string text)
{
texte = text;
}

void text::show()
{
cout << texte;
}


class text_with_stars : public text
{
public:
void show();
};

void text_with_stars::show()
{
cout << "*";
text::show();
cout << "*";
}

int main()
{
text* array[2];
array[0] = new text;
array[0]->write("Hello");
text_with_stars* pointer = new text_with_stars;
pointer->write("Hi");
array[1] = pointer;
for (int i=0;i<2;i++)
{
array[i]->show();
}
return 0;
}

但是当我这样做时,输出是“HelloHi”,这意味着第二个对象使用了来自文本而不是来自 text_with_stars 的显示版本,但我按照书中描述的方式完全相同。有什么问题??

这本书是这样写的:

 Question* quiz[2];
quiz[0] = new Question;
quiz[0]->set_text("Who was the inventor of C++?");
quiz[0]->set_answer("Bjarne Stroustrup");
ChoiceQuestion* cq_pointer = new ChoiceQuestion;
cq_pointer->set_text("In which country was the inventor of C++ born?")
cq_pointer->add_choice("Australia",false);
...
quiz[1] = cq_pointer;

我正在阅读的下一章是关于虚函数的,它解释了系统将始终使用 Question 的成员函数而不是 ChoiceQuestion,看来我应该在网上提问之前阅读更多内容!

最佳答案

void show()

如果要使用来自基类指针的派生类的方法,则需要在基类中是虚拟的

关于相同类层次结构的 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678771/

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