【ThinkingInC++】44、编译期间类里的常量

来源:互联网 发布:3阶魔方矩阵 编辑:程序博客网 时间:2024/05/03 21:31
/*** 书本:【ThinkingInC++】* 功能:编译期间类里的常量* 时间:2014年9月10日08:32:56* 作者:cutter_point*/#include<cstring>#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){    //包含在cstring头文件中(C++)而在C中是string.h(C)头文件    //加了个.h代表涵盖了using namespace std;    memset(stack, 0, size*sizeof(string*)); //吧数组Stack全部初始化}void StringStack::push(const string* s){    if(index < size)        stack[index++]=s;}const string* StringStack::pop(){    if(index > 0)    {        const string* rv=stack[--index];    //初始化,这里用const是为了返回值        stack[index]=0;        return rv;      //返回给函数    }    return 0;}string iceCream[]={    "pralines & cream",    "fudge ripple",    "cutter_point",    "wild mountain blackberry",    "raspberry sorbet",    "lemon swirl",    "rocky road",    "deep chocolate fudge"};const int iCsz=sizeof(iceCream)/sizeof(*iceCream);  //求得iceCream里面string的个数int main(){    StringStack ss;    for(int i=0 ; i<iCsz ; ++i)//    void push(const string* s);        ss.push(&iceCream[i]);    const string* cp;    while((cp=ss.pop()) != 0)        cout<<*cp<<endl;    return 0;}

0 0
原创粉丝点击