Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1155363
  • 博文数量: 241
  • 博客积分: 4385
  • 博客等级: 上校
  • 技术积分: 2383
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-07 23:13
文章分类

全部博文(241)

文章存档

2013年(1)

2012年(8)

2011年(62)

2010年(109)

2009年(61)

分类: C/C++

2009-10-11 11:13:56

在一个类里,const又部分地恢复到它在C语言中的含义,当声明一个类的实例时,它是要占用内存空间的.但是在类的定义中,又不能将其初始化,必须在声明它的实例时初始化.
       
反过来讲,如果要是能在类的定义里初始化的话,那初始化为几呢?比如是10
:
class   myint{
        const   int   c=10;     //   (1)
};
那么使用时
:
myint   mi=5;//
这里想初始化为5,怎么办?是不是不可能了?所以(1)处初始化是不应该的,也是错误的.正确的方法应该是这样的
:
class   myint{
        const   int   c;
public:
        myint(int   v):c(v){}//
注意这里的初始化,必须在这个位置
.
};

这样,在定义myint的变量时,就可以这样使用
:
myint   mi(5);//
这时初始化成5是可以的了
.
当然,要使用下面的语法,可能还需要重载一下=操作符才行吧
:
myint   mi=5;

当然,实在要初始化类里的常量,也是可以的,但是要在前面加个static,如下所示
:
class   myint{
        static   const   int   cs=10;//(2)
};
当这样定义时,cs将永远不占用内存空间.这时,cs与不是类里的const就是相同的了.

阅读(3521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~