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;
就是错误的。
我想知道有没有这样的方法,使得不同的子类能够有不同的静态成员实例。换句话说,我想通过在基类中声明一个静态成员使得它的所有子类都有一个静态成员,但这个成员对于不同的类是不同的。这可以实现吗? 展开
class Base {
public:
static int m_Num;
//...
};
有两个子类:
class Derived1 {
//...
};
class Derived2 {
//...
};
那么这两个类中的m_Num成员指向的都是同一个,也就是说如果已经有:
int Derived1::m_Num = 1;
这一句定义的话,再定义:
int Derived2::m_Num = 3;
就是错误的。
我想知道有没有这样的方法,使得不同的子类能够有不同的静态成员实例。换句话说,我想通过在基类中声明一个静态成员使得它的所有子类都有一个静态成员,但这个成员对于不同的类是不同的。这可以实现吗? 展开
3个回答
展开全部
静态成员有他自己的用途,哪有这样用的啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不行。
你可以在各个子类中定义它们自己的静态成员,然后给它们不同的值。如下:
#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;
}
你可以在各个子类中定义它们自己的静态成员,然后给它们不同的值。如下:
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不行,这是静态成员的规则.因为没有this指针所以可以被这个类中的任何对象实例所引用.
除非你把这个静态成员改为动态才可实现你的功能.
除非你把这个静态成员改为动态才可实现你的功能.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询