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