下面代码定义了基于数组实现的 ManyData 类(含 push()/pop())。关于该代码的说法,正确的是:
#include <iostream>
using namespace std;
class ManyData {
int * __data;
int head, tail, capacity;
public:
ManyData(int cap) {
capacity = cap;
__data = new int[capacity];
head = tail = 0;
}
void push(int val) {
__data[tail++] = val;
}
int pop() {
return __data[--tail];
}
int size() {
return tail - head;
}
};
int main() {
auto myData = ManyData(100);
myData.push(1);
myData.push(2);
myData.push(3);
cout << myData.size() << endl;
cout << myData.pop() << endl;
return 0;
}
- A. 这段代码不能正常运行。
- B. ManyData 类可用于构造队列(Queue)数据结构。
- C. 在 main 末尾增加 cout<<myData.__data[0]; 不会报错。
- D. 应为 push()/pop() 增加异常处理,否则使用时可能因越界导致运行时或逻辑错误。
正确答案:D