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
是否有 base1
、base2
、function1
和 function2
?
如果Derived
类有,那么protected
数据和继承自基类的public
数据有什么关系?他们是一样的吗?还是继承数据和函数是其基类的副本?
【问题讨论】:
【参考方案1】:static
成员未继承,但仍可访问。也就是说,不会有派生类型的版本,但您仍然可以访问它们,并且与直接访问基本静态成员一样。
由于静态数据成员对所有对象都是通用的。
【讨论】:
为了清楚起见,非静态数据成员和成员函数是否“继承”,如果是,这与静态数据成员的“非继承”性质有何不同? @SteveJessop:这是一个更难回答的问题,它需要对 inherited 的含义进行精确定义。派生类型包含作为子对象的基类实例,因此非静态数据成员存在,尽管它们可能直接使用也可能不可用(取决于访问说明符)。不同之处在于,当您修改非静态成员时,您修改了此对象的一部分,但当您修改静态成员时,您正在修改 Base 的静态成员。别人修改了Base的静态成员,你看到的值就会改变。以上是关于C++派生类是不是可以从基类继承静态数据成员和静态成员函数?的主要内容,如果未能解决你的问题,请参考以下文章
C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承
C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承
C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承
C++进阶:继承C++为什么要引入继承 | 继承概念及定义 | 基类和派生类对象赋值转换 | 继承中的作用域 | 派生类的默认成员函数 | 继承与友元/静态成员 | 复杂的菱形继承及菱形虚拟继承