C++类中函数透传
描述:
在继承体系中,有时候,子类中函数的定义问题,导致子类对象无法直接使用父类的函数(可访问函数);这种现象是函数决议引起的。
解决方法
其一:子类中定义重新实现一遍父类的该函数,并调用父类函数。
其二:便是透传。
其三:不就是名字的问题嘛,换个名字就齐活了。
场景复现
Qt的QComboBox类,定义了函数:void QComboBox::addItem(const QString &text, const QVariant &userData = QVariant());
然后,定义其子类:class GComboBox : public QComboBox { /*省略N多内容*/ };
在GComboBox类中,定义了函数:void GComboBox::addItem(const QString &id, const QString &text);
接着,定义子类的对象,并调用函数::addItem。
GComboBox cbb;
cbb.addItem("你猜我最终调用谁的函数,实现了我自己!"); /*答案是:谁都没调用;因为,此时,编译,不过去。*/
这一切的功劳,都要归功于函数的决议上。