此问题在此处已有答案:
Reason for C++ member function hiding [duplicate](4个答案)
2天前关闭。
我很难弄清楚为什么这个程序工作。我写它的基础上我的笔记(OOPP和类),但我不明白它到底是如何工作的?我将感谢任何帮助!
代码如下:
#include <iomanip>
#include <iostream>
using namespace std;
class Base{
public:
void f(int) {std::cout<<"i";}
};
class Derived:Base{
public:
void f(double){std::cout<<"d";}
};
int main(){
Derived d;
int i=0;
d.f(i);
}
我试过使用cout语句来显示所有内容是如何传递和运行的,但它不允许我使用cout语句。
1条答案
按热度按时间wswtfjt71#
这个程序定义了一个名为Base的类,它有一个名为f的成员函数,该函数带有一个int参数。它还定义了一个名为Derived的类,该类继承自Base,它有一个名为f的成员函数,该函数带有一个double参数。
在主函数中,创建一个Derived类型的对象,并将一个int变量初始化为0。然后对Derived对象调用成员函数f,将int变量作为参数传入。
当在Derived对象上调用成员函数f时,编译器在Derived类中查找匹配的函数签名。由于Derived类中存在具有相同名称和参数列表的函数,因此调用该函数。Derived类中的函数输出“d”,表示它已被调用。