类里面的const:编译期间的变量和常量

 //类里面的const:编译期间的变量和常量。
#include<iostream>
#include<string>
using namespace std;
//var in compile-time:
class Fred {
      const int size;
public:
       Fred(int sz);
       void print();
};

//对size的初始化在参数列表和函数体之间,保证在使用它之前为常量。
Fred::Fred(int sz):size(sz){}
void Fred::print(){ cout << size << endl; }
//constant in comiple-time:
//一个存放字符串指针的栈StringStack:
class StringStack{
 //keyword:static
         static const  int size = 100;//enum {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* t = stack[--index];
              stack[index] = 0;
              return t;
 }
       return 0;
}
//StringStack测试用例:
string iceCream[] = {
          "pralines & cream",
         "fudge ripple",
         "wild mountain",
         "raspberry sorbet",
         "rocky road"
};
//calculat the size of the case:
 const int iCsz =
       sizeof iceCream / sizeof *iceCream;
//Test in main():
int main(){
 //class Fred:
  Fred a(1),b(2),c(3);
  a.print(),b.print(),c.print();
  //class StringStack:
  StringStack ss;
 for(int i = 0; i < iCsz; ++i)
       ss.push(&iceCream[i]);
 const string* p;
 while((p = ss.pop()) != 0)
       cout << *p << endl;
 //display the result
  system("pause");
 }
/** 对对象的数组初始化的三种方法
 @for循环
 @构造函数
 @<string.h>的memset(,,)【该函数以字节为操作单位】
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值