C++ 什么是有序类型

来源:百度知道 编辑:UC知道 时间:2024/05/20 13:28:29
因为name 是一个数组不是有序类型所以它不能在类体内被初始化任何试图这么做的行为都会导致编译时刻错误例如
class Account {
// ...
private:
static const int nameSize = 16; // ok: 有序类型
static const char name[nameSize] =
"Savings Account"; // 错误
};

我尝试给private的成员赋值,但是出错了
class Y
{
public:
...
private:
static int _xval ;
static int _callsxal = 20 ;

};

C:\Documents and Settings\Administrator\桌面\Microsoft Visual C++\123.cpp(23) : error C2258: illegal pure syntax, must be '= 0'
C:\Documents and Settings\Administrator\桌面\Microsoft Visual C++\123.cpp(23) : error C2252: '_callsxal' : pure specifier can only be specified for functions
C:\Documents and Settings\Administrator\桌面\Microsoft Visual C++\123.cpp(30) : error C2065: '_callsxal' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\Microsoft Visual C++

只有常数静态整形数据成员才可以在类或结构中初始化

注:1、除了静态数据成员外,数据成员不能在类体中被显式地初始化。

2、作为特例,有序型的const静态数据成员可以在类体中用一常量值初始化。

所以,你第一个有const是可以初始化的,第二个不是这种情况。
但是,namesize是有序类型,可以初始化,name是数组(不是有序类型),不能在类体内初始化!

一般地,静态数据成员在该类定义之外被初始化。必须被其类名限定修饰。如:
#include “account.h”
Double Account::_interestRate = 0.0589;

所以第二个应该在类外写成: int Y:: _callsxal =20吧,你试试