Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183171
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-19 19:12
文章分类

全部博文(67)

分类: C/C++

2014-12-23 18:57:30


1、类中的const变量
   (1) 非static的const
        需在initialization list中初始化
        每个类的实例都有一个,可通过如下代码验证
        class A
        {
        public:
            const int i;
            A():i(10){};
            A(int t):i(t){};
        }
        A a1, a2;
        cout<<"address of a1.i:"<<&(a1.i)<<"address of a2.i:"<<&(a2.i)<
        两个地址是不一样的。
        另外,可通过上面的第二个构造函数为不同的对象指定不同的i
     (2)static const 
        在声明时初始化;
        属于类,即每个类只有一个,所有该类的对象共享。
        但如下代码不能通过编译,何解??
         class A
        {
        public:
            static const int i = 1;
        }
        A a1;
        cout<<"address of a1.i:"<<&(a1.i)<//取i的地址
        无法通过编译,提示:undefined reference to A:i
     (3)函数声明后面的const 
        类的const对象只能调用这种后面跟const的函数,而且这种函数只能操作类的const变量

2、类外的const变量
    a.h中定义const int i = 1; b.cpp和c.cpp中都 include a.h,则b.cpp和c.cpp中的const int i是不一样的,各有自己的存储空间,只是其值相等
    若想b.cpp和c.cpp中的const int i时同一个,可在a.h中声明extern const int i; 在b.cpp或c.cpp中定义const int i = 1;即可。
阅读(1086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~