注册 登录
编程论坛 C++教室

求教 类的静态成员

evilsharp 发布于 2010-07-07 22:24, 643 次点击
c++ primer中说 static数据成员的类型可以是该成员所属的类类型。非static成员被限定声明为其自身类对象的指针或引用:
class Bar{
public:
//
private:
static Bar mem1 //ok
Bar *mem2: //ok
Bar mem3; //errror
}
1、我没搞明白这是什么意思,有什么意义呢,
2、类还没定义完呢,怎么就有成员函数是本类的类型呢。这不矛盾吗?做什么用呢 ?

7 回复
#2
kspliusa2010-07-08 01:52
如果定义自身对象的指针类型 ,就像定义链表一样,例如 :
typedef struct  {
    int m_data;
    Data * m_next;//链表后继
}Data;
和链表有点像
#3
evilsharp2010-07-08 21:36
不明白
#4
evilsharp2010-07-08 22:35
以下是引用炫耀天子在2010-7-8 21:58:13的发言:

只要点进你想退出的那个家族,就会出现
感觉没头没尾的 ,请说完整点
#5
东海一鱼2010-07-09 23:13
静态成员是从语义上说是类的成员,从内存数据模型上说他是一个全局变量。因此他是属于类的,而不是类的实例的成员。
类的指针对象可以对自身引用,从语义上说他仅仅是一个指针变量声明。当然没有问题。
而类型成员变量则需要完整的类型定义,否则就发生了类型定义嵌套,是不允许的。

这两中变量经常运用在类库的RTTI持续化存储、加载上。


[ 本帖最后由 东海一鱼 于 2010-7-9 23:15 编辑 ]
#6
evilsharp2010-07-10 21:44
class Bar{
public:
//
private:
static Bar mem1 //ok
//mem1 是一个实例对象吗 ?用不用调用构造函数初始化,如果需要初始化,他是怎么初始化的?
Bar *mem2: //ok
//mem2指针指向的是一个实例对象吗 ?这个实例用初始化吗?
Bar mem3; //errror
}
#7
evilsharp2010-07-12 22:05
自己顶,没有高手解答吗?
1