C++ 继承与多态:深入解析与实践
1. 继承中的问题与解决方法
在继承的使用过程中,可能会遇到一些问题,比如函数名冲突导致程序无法编译。例如,在某些情况下,基类中使用了非唯一的函数名,像 volume 既作为 Box 类的函数被继承,又作为 Contents 类的数据成员被继承, getWeight() 函数在 CerealPack 类中从 Carton 和 Contents 类继承,这就产生了歧义问题。
为了避免此类问题,在编写用于继承的类时,应尽量避免成员名的重复。如果无法重写类(例如基类来自某个库),则需要在 main() 函数中限定函数名。以下是修改输出语句使代码正常工作的示例:
std::cout << "cornflakes volume is " << cornflakes.Carton::volume() << std::endl
<< "cornflakes weight is " << cornflakes.Contents::getWeight() << std::endl;
修改后,程序可以编译并运行,输出结果如下:
Box(double, double, double) called.
Carton(
超级会员免费看
订阅专栏 解锁全文
1038

被折叠的 条评论
为什么被折叠?



