C++派生类是不是可以从基类继承静态数据成员和静态成员函数?

Posted

技术标签:

【中文标题】C++派生类是不是可以从基类继承静态数据成员和静态成员函数?【英文标题】:C++ Does derived class could inheritance Static data member and Static Member function from Base class?C++派生类是否可以从基类继承静态数据成员和静态成员函数? 【发布时间】:2014-01-16 23:25:41 【问题描述】:

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 是否有 base1base2function1function2

如果Derived类有,那么protected数据和继承自基类的public数据有什么关系?他们是一样的吗?还是继承数据和函数是其基类的副本?

【问题讨论】:

【参考方案1】:

static 成员未继承,但仍可访问。也就是说,不会有派生类型的版本,但您仍然可以访问它们,并且与直接访问基本静态成员一样。 由于静态数据成员对所有对象都是通用的。

【讨论】:

为了清楚起见,非静态数据成员和成员函数是否“继承”,如果是,这与静态数据成员的“非继承”性质有何不同? @SteveJessop:这是一个更难回答的问题,它需要对 inherited 的含义进行精确定义。派生类型包含作为子对象的基类实例,因此非静态数据成员存在,尽管它们可能直接使用也可能不可用(取决于访问说明符)。不同之处在于,当您修改非静态成员时,您修改了此对象的一部分,但当您修改静态成员时,您正在修改 Base 的静态成员。别人修改了Base的静态成员,你看到的值就会改变。

以上是关于C++派生类是不是可以从基类继承静态数据成员和静态成员函数?的主要内容,如果未能解决你的问题,请参考以下文章

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承

C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???

C++ 容器与继承