c++ primer 点滴记录
(1) 正如你看到的, 数据成员的声明看起来很像在块域或名字空间中的变量声明。但是, 除了静态(static)数据成员外,数据成员不能在类体中被显式地初始化。例如
class First
{
int memi = 0; //错误
double memd = 0.0 //错误
};
这一点我以前不知道, 现在知道了。类的数据成员是通过类的构造函数进行初始化的。
(2) 只有被声明为const的成员函数才能被一个const类对象调用。关键字const被放在成员函数的参数表和函数定义之间。对与在类体外定义的const成员函数,我们必须在它的定义和声明同时指定关键字const。而且把一个修改类数据成员的函数声明为const是非法的
这段话有意思:
构造函数和析构函数是两个例外,即使构造函数和析构函数不是const成员函数,const类对象也可以调用它们。当构造函数执行结束,类对象已经被初始化时,类对象的常量性被建立起来了。析构函数一调用,常量性就消失了。所以一个const类对象"从构造完成时刻到析构开始时刻"这段时间内被认为是const。
(3) 一般的, 静态数据成员在该类定义之外被初始化。如同一个成员函数被定义在类定义之外一样,在这种定义中的静态成员的名字必须被其类名限定修饰。
作为特例,有序型的const静态数据成员可以在类体中用一常量初始化。
阅读(439) | 评论(0) | 转发(0) |