c++类的常量初始化的问题

书上写的不知道什么意思,试过也不行
class point{
public:
point():x(0),y(0)
private:
const int x;
const int y;
};
point():x(0),y(0),是构造函数
这些是在书上讲继承的构造函数时说的

首先,你这个代码有错,point():x(0),y(0)不完整,正确的应该如下:
class point{
public:
point():x(0),y(0)
{}//构造函数需要函数体,哪怕是空的
private:
const int x;
const int y;
};
现在回答你的问题。
一、c++中的const常量需要初始化时赋值,然后就不能改变其值,更不能赋值,所以叫常量。
二、在你的代码中,x,y都是class的成员变量,且为常量。因此我们需要找到其初始化的地方。而class的成员变量不是在声明的地方初始化的,而是在构造函数执行之前,那么哪里是构造函数执行之前呢?正是那个point():x(0),y(0)的冒号“:”后面,但不是构造函数内部({}里面)。这个叫做初始化列表,并且是只能出现在构造函数实现的地方,即写函数体的时候。你这个恐怕是漏了{},所以不行
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-16
这些都是一些枚举变量值,其值在类头文件中已经定义了


enum _Openmode {in = 0x01, out = 0x02, ate = 0x04,
app = 0x08, trunc = 0x10, binary = 0x20};
第2个回答  2011-01-15
point():x(0),y(0),是构造函数吗? point(){}
相似回答