继承的静态函数可以访问重写的静态私有数据成员吗?

时间:2013-07-28 23:47:23

标签: c++ inheritance

我想知道以下事项:

在static.h中:

class Base
{
    private: static const char* className;

    public:  static const char* getClass() { return className; };

};


class Sub : public Base
{
    private: const static char* className;
};

在static.cpp中:

#include "static.h"
#include <iostream>

const char* Base::className = "Base";
const char* Sub ::className = "Sub";

int main() {    std::cout << Sub::getClass(); }

// outputs "Base"

是否可以继承这样的函数并让它使用被覆盖的数据成员?

1 个答案:

答案 0 :(得分:0)

是的,但这不是'覆盖',实际上是'隐藏'。该类可以访问自己的私有成员,其数据成员使用基类中的相同名称隐藏声明。