C++类中函数透传

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("你猜我最终调用谁的函数,实现了我自己!"); /*答案是:谁都没调用;因为,此时,编译,不过去。*/


  这一切的功劳,都要归功于函数的决议上。
posted @ 2020-10-29 14:28  echohelper  阅读(583)  评论(0)    收藏  举报