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) |