<pre name="code" class="cpp">class example{
static double rate ;
static double size = 10;
static const int vecsize = 20;
static vector<double> vec(vecsize);
};
我们知道,一般情况下定义类的静态成员时是类内声明,类外初始化,不过如果非要在类内进行初始化的话,应满足以下两点
(1)静态成员必须是const类型或其他字面值常量类型的constexpr。
(2)若非要在类内给静态成员提供的初始值,该值必须为常量表达式。
由此可知,
static double rate ;是中规中矩的类内声明语句,是对的;
static const int vecsize=20 ;定义的vecsize不是const类型或其他constexpr类型,是错的;
static const int vecsize=20;左侧和右侧均是常量表达式,是对的;
static vector<double> vec(vecsize); vector是模板,不是常量表达式,是错的