c++ - 如果基类具有在成员函数中修改的私有数据成员,派生类如何使用该函数?
问题描述
我正在做一个项目来学习面向对象的编程。据我了解,当一个类从基类派生时,它可以访问基类的所有公共成员函数。在 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?
解决方案
据我了解,[...] 长度无法更改。
你误会了。成员是私有的并不意味着它不能被更改。
那么 increaseLengthByOne 函数会做什么呢?
它增加了成员length
。
推荐阅读
- hyperledger-fabric - 是否可以同时在 Hyperledger Fabric 中安装不同版本的二进制文件?
- javascript - 在表格旁边放置一个 div 并添加滚动条
- java - 使用 java 连接到 Secured Elastic Search
- jira-rest-api - 如何在jira中使用ScriptRunner rest Endpoint调用rest API
- solr - 无法在 solr 中获取文档
- paypal - 如何启用参考交易
- r - R中的SAS PROC SCORE函数
- r - 如何操作数据结构以创建在 R 中与 networkD3(特别是 sankeyNetwork 函数)一起使用所需的格式?
- react-native - 使用 jest 和酶测试来自 @react-native-community/slider 的 Slider onSlidingComplete
- python - MFnMesh allIntersections 返回错误结果