C++类中为何不能用static const int CINLIM=80初始化常量?VC6.0就是通不过啊?

来源:百度知道 编辑:UC知道 时间:2024/07/03 15:04:16
class String
{
private:
char * str;
int len;
static int num_strings;
static const int CINLIM=80;//VC6.0为何不能通过,书上都是这样写的啊?
public:
String(const char * s);
String();
String(const String &);

};

#endif

搞不懂为什么不能在类中定义const static常量,但是这种语法在书上都是对的啊,是VC6.0的问题吗?

还是我来吧
这不是static的原因,因为类中变量初始化要到构造函数或类建立完毕的地方(如类外部)才能初始化,而且每个对象初始化的数据不同。

所以类中的CONST数据类型会有这样一种现象,如你定义的 String A,B
A.CINLIM的值和 B.CINLIM的值可以不同

可以定义,但是vc6.0不能在里面初始化
class String
{
private:
char * str;
int len;
static int num_strings;
static const int CINLIM;//VC6.0为何不能通过,书上都是这样写的啊?
public:
String(const char * s);
String();
String(const String &);

};

const int String::CINLIM = 80;
这样应该可以通过

在类定义时不能给变量初始化

static const 类型数据首次定义赋初值只能是0吧
好像是,记不太清了