读书人

有关c++编程思想这本书的一个有关问题

发布时间: 2013-01-02 13:08:44 作者: rapoo

有关c++编程思想这本书的一个问题
#include <string>
#include <iostream>
using namespace std;
class StringStack {
static const int size = 100;
const string* stack[size];
int index;
public:
StringStack();
void push(const string* s);
const string* pop();
};
StringStack::StringStack() : index(0) {
memset(stack, 0, size * sizeof(string*));
}
void StringStack::push(const string* s) {
if(index < size)
stack[index++] = s;
}
const string* StringStack::pop() {
if(index > 0) {
const string* rv = stack[--index];
stack[index] = 0;
return rv;
}
return 0;
}
string iceCream[] = {
"pralines & cream",
"fudge ripple",
"jamocha almond fudge",
"wild mountain blackberry",
"raspberry sorbet",
"lemon swirl",
"rocky road",
"deep chocolate fudge"
};
const int iCsz =sizeof iceCream / sizeof *iceCream;
int main() {
StringStack ss;
for(int i = 0; i < iCsz; i++)
ss.push(&iceCream[i]);
const string* cp;
while((cp = ss.pop()) != 0)
cout << *cp << endl;
} ///:~
这段代码是书上的,编译运行也没有问题,可是我不明白stack数组是const的了,为什么不在初始化列表中初始化呢,而且居然还能在push里面修改内容?
[解决办法]
const string* stack[size];
stack是一个指针数组, 其内部元素为指向const string的指针。 stack自身并不是const的

读书人网 >C++

热点推荐