首页 > 解决方案 > 如果基类具有在成员函数中修改的私有数据成员,派生类如何使用该函数?

问题描述

我正在做一个项目来学习面向对象的编程。据我了解,当一个类从基类派生时,它可以访问基类的所有公共成员函数。在 C++ 中,公共继承意味着不能访问私有成员。那么在基类中修改私有成员函数时会发生什么?

我已经尝试构建一些测试程序来看看会发生什么,但我仍然非常困惑。我也尝试在网上查找是否可以找到任何答案,但我并没有真正找到任何答案。

class Base 
{
    private:
        int length;
    public 
        void increaseLengthByOne();
};

void Base::increaseLengthByOne()
{
    this->length++;
}

class Derived : public Base 
{
    private:
        int dLength;
    public: 
        void newFunction();
};

void Derived::newFunction()
{
    printf("New function working");
    increaseLengthByOne();
}

据我了解, dLength 不会改变, Length 也不能改变。那么 increaseLengthByOne 函数会做什么呢?我将如何做到这一点,以便 increaseLength 函数可以增加 dLength?

标签: c++classobjectprivate

解决方案


据我了解,[...] 长度无法更改。

你误会了。成员是私有的并不意味着它不能被更改。

那么 increaseLengthByOne 函数会做什么呢?

它增加了成员length


推荐阅读