gpt4 book ai didi

c++ - 堆栈和队列与父类和虚函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:49 25 4
gpt4 key购买 nike

我的一项家庭作业是创建 Stack 和 Queue 的层次结构。我需要有一个父类(super class) DataStructure,它具有成员函数 push 和 pop。 pop 应该在 DataStructure 中只声明一次,而 push 需要是一个虚函数。这是我目前所拥有的:

#include <iostream>
#include <vector>

using namespace std;

class DataStructure {
protected:
vector<int> data;
public:
void push(int element) { }

int pop() {
if (data.size() == 0)
return -1;

int elem = data.back();
data.pop_back();
return elem;
}
};


class Stack: public DataStructure {

};


class Queue: public DataStructure {

};

我卡住了。我不知道如何实现虚函数。

最佳答案

你们很亲近。主要是,您缺少 void push() 前面的 virtual 关键字。

明确地说,

void push(int element) { }

变成:

virtual void push(int element) { }

或者,对于 a pure virtual function :

virtual void push(int element) = 0;

此外,您现在可以将 push() 添加到 Stack 和 Queue:

堆栈

class Stack: public DataStructure {
public:
void push(int element) {
std::cout << "inside Stack.push()";
}
}; // Stack

队列

class Queue: public DataStructure {
public:
void push(int element) {
std::cout << "inside Queue.push()";
}
}; // Stack


以下是您的代码的修订版。继续努力!

#include <iostream>
#include <vector>

using namespace std;

class DataStructure {
protected:
vector<int> data;
public:
virtual void push(int element) = 0;

int pop() {
if (data.size() == 0)
return -1;

int elem = data.back();
data.pop_back();
return elem;
} // pop()
}; // DataStructure


class Stack: public DataStructure {
public:
void push(int element) {
std::cout << "inside Stack.push()" << std::endl;
}
}; // Stack


class Queue: public DataStructure {
public:
void push(int element) {
std::cout << "inside Queue.push()" << std::endl;
}
}; // Queue

关于c++ - 堆栈和队列与父类和虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685379/

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