C++继承 - 将 parent 更改为祖 parent

标签 c++ oop

我正在处理的 C++ 项目中遇到问题。对于我缺乏 C++ OOP 知识,我提前表示歉意。

我有一系列的类都继承自一个共同的父类,例如:

class child : public parent
{
     public:
        ...
};

我的问题是我需要修改 parent 中的一个函数以适合我的代码;不幸的是(虽然我可以访问源代码)父类由其他项目共享,我的预期更改会导致副作用,从而破坏其他人的代码。但是,如果项目维护者批准,我可以进行一些更改 - 如果没有副作用(例如范围),他通常会这样做。

虽然显然我可以复制原始父级,修改它并有效地分支代码,但出于可维护性目的我真的不想这样做。

所以我的问题 - 是否有可能让原始父类充当祖 parent ,并创建一个简单的单一功能父类来覆盖祖 parent 函数,并更改我的代码以从新父类继承 - 所有其他调用没有在传递给祖 parent 的新 parent 中实现?如果是这样,我将如何做到这一点(从广义上讲)?或者有更好的解决方案吗?还是我完全偏离了轨道?

我希望这很清楚。感谢您的帮助,我正在用 C++ 在黑暗中摸索。

最佳答案

如果您认为该功能仅对一个 child 有用,请仅将代码添加到该 child 。

如果您认为该功能将对更多 child 有用,请将代码添加到该父类,但给它一个新名称。现有的其他子类不会受此影响。您可以在允许的情况下迁移现有的子项以使用新功能。

或者,创建一个 API 函数,而不是类成员函数,子类暂时可以使用。同样,现有的子类及其用法不会受到此更改的影响。如果其他子类需要利用该功能,您可以一次迁移一个。 API函数是否可以提升为成员函数可以留待以后决定。

关于C++继承 - 将 parent 更改为祖 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22902923/

相关文章:

c++ - 错误: anachronistic old-style base class initializer

c++ - 当我想在 visual studio 2010 中使用 AVX2 指令时找不到符号“_mm256_max_epu8”

c++ - 使用 ATL 库时如何在运行时更改 Web 服务 URL?

c++ - 使用赋值运算符时 C++ 中的编译错误 =?

c++ - 如何删除部分类(class)?

c++ - 为什么在类内部不允许初始化静态成员变量,而允许初始化 const 静态成员?

c++ - 从冒号分隔的文件中提取信息 - C++

c# - Object() 和 Object{} 的区别

php - 从 PHP 对象中获取所有以子字符串开头的方法名称

java - 面向对象将项目添加到 arrayList