静态对象成员之不解?
近日看<<c++对象模型>>,在page 129页
有如下代码:
class Point3d {
public:
virtual ~Point3d();
// ...
protected:
static Point3d origin;
float x, y, z;
};
为了测试:我写了如下的代码,
#include<stdio.h>
class Point3d
{
public:
virtual ~Point3d(){}
// ...
static Point3d origin;//???????
float x, y, z;
};
void main()
{
printf("&Point3d::x = %p\n", &Point3d::x);
printf("&Point3d::y = %p\n", &Point3d::y);
printf("&Point3d::z = %p\n", &Point3d::z);
//Point3d oo;
//oo.origin.x =3;
//oo.origin.origin .......origin.x =3;
}
恢复注释掉的代码,vc6 出错,
这个静态对象的声明中又内嵌了该静态对象的声明, 递归分配了空间,
这一定是不行的,但没有直接对数据成员赋值时,似乎compiler不会
报错,对这一行为很不解?
??????????