c++ 这个程序做什么,它是如何做的?[duplicate]

rryofs0p  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(145)

此问题在此处已有答案

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语句。

wswtfjt7

wswtfjt71#

这个程序定义了一个名为Base的类,它有一个名为f的成员函数,该函数带有一个int参数。它还定义了一个名为Derived的类,该类继承自Base,它有一个名为f的成员函数,该函数带有一个double参数。
在主函数中,创建一个Derived类型的对象,并将一个int变量初始化为0。然后对Derived对象调用成员函数f,将int变量作为参数传入。
当在Derived对象上调用成员函数f时,编译器在Derived类中查找匹配的函数签名。由于Derived类中存在具有相同名称和参数列表的函数,因此调用该函数。Derived类中的函数输出“d”,表示它已被调用。

相关问题