读书人

静态数据成员的纳闷

发布时间: 2013-07-09 09:50:48 作者: rapoo

静态数据成员的困惑


enum EIdentity{eStudent, eTeacher};

class Person
{
public:
Person(EIdentity identity);

EIdentity getIdentity() const;

private:
EIdentity _identity;
}

class Student : public Person
{
public:
Student()
: Person(eStudent)
{

}
};

class Teacher: public Person
{
public:
Teacher()
: Person(eTeacher)
{

}
};


我创建的所有Student对象,都有一个数据成员EIdentity _identity;并且值都是eStudent,有没有办法,使得像使用静态数据成员一样,EIdentity _identity只保存一份?
[解决办法]
好像除了静态成员没有办法了,要是你的值占空间大一点话,传个指针到也可以。
[解决办法]
u can use a static member
[解决办法]

enum EIdentity{eStudent, eTeacher};

class Person
{
public:
//Person里面做一些其他的事情吧,比如姓名性别等
//Person(EIdentity identity);

//EIdentity getIdentity() const;

private:
//枚举不要放在基类里面
//EIdentity _identity;
}

class Student : public Person
{
public:
static const EIdentity _identity = eStudent;
//Student()
//: Person()
//{

//}
//在每个类里
EIdentity getIdentity() const
{
return _identity;
}
};
//类外定义static变量
const EIdentity Student::_identity;

class Teacher: public Person
{
public:
static const EIdentity _idrntity = eTeacher;
//Teacher()
//: Person(eTeacher)
//{

//}
EIdentity getIdentity() const
{
return _idrntity;
}
};
const EIdentity Teacher::_idrntity;

在每个类里面有一份函数,返回类的静态变量来表示每一个对象所属的身份,这样子没个对象身上不再单独占有枚举变量空间,但是每个类都要有个几乎代码相同的函数了,好像没啥好办法了
[解决办法]
那用静态成员不挺好的么。。

读书人网 >C++

热点推荐