怎样在一个类中创建一个编译时(compile-time)常量?
我们知道static的意思是:无论这个类的多少个对象被创建,static修饰的属性永远只有一个实例。
用static const修饰的成员必须在定义的时候就被初始化,其他数据成员都在构造函数或者其他函数成员中被初始化。
const string *stack[size];
stack是一个数组,里面存储的是指针,这些指针指向 const类型的string。
#include <stdafx.h>
#include <iostream>
#include <string>
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 almod 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;
int a;
cin>>a;
}