c++静态成员的声明和定义问题

C++语言 码拜 9年前 (2016-04-09) 1180次浏览
下面的静态数据成员的声明和定义有错误吗?请解释原因
// 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:

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 程序就不再试图去初始化它

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++静态成员的声明和定义问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)