C++可不可以让子类继承父类的静态成员后赋予它各自不同的值?

我们知道,假如一个类有一个静态成员:classBase{public:staticintm_Num;//...};有两个子类:classDerived1{//...};c... 我们知道,假如一个类有一个静态成员:
class Base {
public:
static int m_Num;
//...
};
有两个子类:
class Derived1 {
//...
};
class Derived2 {
//...
};
那么这两个类中的m_Num成员指向的都是同一个,也就是说如果已经有:
int Derived1::m_Num = 1;
这一句定义的话,再定义:
int Derived2::m_Num = 3;
就是错误的。
我想知道有没有这样的方法,使得不同的子类能够有不同的静态成员实例。换句话说,我想通过在基类中声明一个静态成员使得它的所有子类都有一个静态成员,但这个成员对于不同的类是不同的。这可以实现吗?
展开
 我来答
飞怀拂雪
2008-12-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
静态成员有他自己的用途,哪有这样用的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-12-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
不行。

你可以在各个子类中定义它们自己的静态成员,然后给它们不同的值。如下:
#include<iostream>
using namespace std;

class Base
{
public:
static int m_Num;
//...
};

class Derived1:public Base
{
static int m_Num;
//...
};
class Derived2:public Base
{
static int m_Num;
//...
};

int Derived1::m_Num = 1;
int Derived2::m_Num = 3;

int main()
{
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdma980
2008-12-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
不行,这是静态成员的规则.因为没有this指针所以可以被这个类中的任何对象实例所引用.

除非你把这个静态成员改为动态才可实现你的功能.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式