0
C++派生类是否可以继承基类中的静态数据成员和静态成员函数?C++派生类是否可以继承基类的静态数据成员和静态成员函数?
class Base
{
public:
static int base1;
static void function1() {};
protected:
static int base2;
static void function2() {};
}
class Derived : public Base
{
public:
int a;
protected:
int b;
}
是否Derived
有base1
,base2
和function1
和function2
?
如果Derived
类拥有它们,那么protected
数据和public
数据之间的关系是什么关系,这些数据是从基类继承的?他们是一样的吗?或者是继承数据和函数的基类的副本?
为了清楚起见,非静态数据成员和成员函数是“继承的”,如果是的话,这与静态的“非继承”性质有什么不同? –
@SteveJessop:这是一个更难回答的问题,它需要一个精确的定义*继承*的含义。派生类型*包含*基类的一个实例作为子对象,所以非静态数据成员是* there *,虽然它们可能或不可用于直接使用(取决于访问说明符)。所不同的是,当你修改非静态成员时,你修改了这个对象的一部分,但是当你修改静态成员时,你正在修改这个Base的静态成员。其他人修改了Base的静态成员,你看到的值将会改变。 –