当基类指针指向派生类对象时,利用基类指针调用派生类中与基类同名但被派生类重写后的成员函数时,调用的是() A. 基类的成员函数 B. 派生类的成员函数 C. 不确定 D. 先调用基类的,再调用派生类的 相关知识点: 试题来源: 解析 A.基类的成员函数
接着通过该基类指针,分别调用了f( )函数和g( )函数。由于在基类Base的定义中,f( )函数使用了virtual关键字,因此它是虚函数,即具有多态性,所以通过指针p调用的f( )是派生类Derived中定义的 f( )。而g( )不是虚函数,所以通过指针p调用的是Base中定义的g( )。由此可见,最终输出的结果是“f+g0+”。故本...
本文将讨论基类指针调用派生类函数的实现方式、注意事项以及示例代码。 1.实现方式 在C++中,我们可以通过将基类指针指向派生类对象来实现基类指针调用派生类函数。这样做的好处是,我们可以使用一个基类指针来调用多个派生类的函数,而无需显式地知道具体是哪个派生类对象。 2.注意事项 在使用基类指针调用派生类函数时,...
为什么一定在类B中查找呢?这是因为ptr->print是一个依赖名,所以必须在ptr所声明的空间类B中查找。如...
将派生类对象地址赋值给基类指针和派生类指针后, 同名函数可能会发生override和隐藏情况. override:派生类函数与基类函数同名, 参数也相同, 且基类函数含有virtual关键字 隐藏:指派生类的函数屏蔽了与其同名的基类函数. 规则如下: 派生类函数与基类函数同名, 参数不同, 则不论是否有virtual关键字,基类函数会被隐藏; ...
定义抽象类Shape,在此基础上派生出圆类Circle、正方形类Square、三角形类Triangle,3个派生类都有构造函数,输入和显示信息函数Input()、Show(),计算面积的函数Area(),计算周长的函数Perim()。完成以上类的编写,在主函数中动态创建3类对象,通过基类的指针指向派生类对象,并调用派生类对象相应函数。
虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:
首先,delete pd调用的是派生类的析构函数。比如最直接的写法是:Dog*pd=newDog;deletepd;运行结果显示...
当基类指针指向派生类对象时,( )。A.发生语法 错误B.只能调用基类自己定义的成员函数C.可以调用派生类的 全部 成员函数D.以上说法全部错误
图形类有一个函数area();用来求面积,但是由于不同图形求面积的方法不同,要由具体的派生类来决定,所以可以把它定义为一个虚函数,由派生类来重载这个函数,所以不同的派生类里面area()函数的函数体是不同的,创建一个基类指针*p,让他指向不同的派生类对象,p在调用area()方法时,就会调用...