下面的静态数据成员的声明和定义有错误吗?请解释原因
// example.h
class Example{
public:
static double rate = 6.5;
static const int vecSize = 20;
static vector<double> vec(vecSize);
};
// example.c
#include”example.h”
double Example::rate;
vector<double> Example::vec;
// example.h
class Example{
public:
static double rate = 6.5;
static const int vecSize = 20;
static vector<double> vec(vecSize);
};
// example.c
#include”example.h”
double Example::rate;
vector<double> Example::vec;
解决方案
40
比较常见的做法是:
example.h:
example.h:
class Example{ public: static double rate; static const int vecSize = 20; static vector<double> vec; };
example.cpp:
#include"example.h" double Example::rate = 6.5; vector<double> Example::vec;
20
static double rate = 6.5;
类的静态成员变量需要在类外初始化。
double Example::rate=6.5;
声明只是表明了变量的数据类型和属性,定义则是需要分配内存。
static声明的类静态数据成员,其实体远在main()函数开始之前就已经在全局数据段中诞生了,这时候类对象的生命期还没开始。
static const int vecSize = 20;//原因是是const 程序就不再试图去初始化它
类的静态成员变量需要在类外初始化。
double Example::rate=6.5;
声明只是表明了变量的数据类型和属性,定义则是需要分配内存。
static声明的类静态数据成员,其实体远在main()函数开始之前就已经在全局数据段中诞生了,这时候类对象的生命期还没开始。
static const int vecSize = 20;//原因是是const 程序就不再试图去初始化它