thinking in c++ 中有一处错误,他认为类的静态数据成员的定义具有内部连接属性,可以放在头文件里面,这是不对的。下面具体说明。
关于类的静态数据成员,他的定义必须在类的外部,并且只能有一次定义。这个定义,具有外部连接属性,最好放在类的实现文件里面,不能放在类的头文件里面。
下面的例子证明这一点。
3个文件,一个header.h,header.c main.c
首先是header.h
























header.c













main.c











上面这个例子中,静态变量i的定义,只能放在类的实现文件里面,不能放在头文件里面。否则会出现重定义。
这说明具有外部连接属性。
关于静态数据成员,有一类特殊的,那就是const的静态数据成员,
类似:const static int i=0;
可以在类的声明中定义。其他的都不可以。