【问题标题】:What does this program do, and how does it do that?这个程序是做什么的,它是如何做到的?
【发布时间】:2022-11-17 11:44:53
【问题描述】:

我无法弄清楚为什么这个程序有效。我是根据我的笔记(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 语句来向我展示所有内容是如何传递和运行的,但它不允许我进行任何操作。

【问题讨论】:

    标签: c++ class c++11 derived-class


    【解决方案1】:

    这个程序定义了一个名为 Base 的类,它有一个名为 f 的成员函数,它接受一个 int 参数。它还定义了一个名为 Derived 的类,该类继承自 Base 并具有一个名为 f 的成员函数,该函数采用双参数。

    在主函数中,创建了一个 Derived 类型的对象,并将一个 int 变量初始化为 0。然后在 Derived 对象上调用成员函数 f,将 int 变量作为参数传入。

    当在 Derived 对象上调用成员函数 f 时,编译器会在 Derived 类中查找匹配的函数签名。由于Derived类中有一个同名函数和参数列表,所以调用了那个函数。 Derived类中的函数打印出一个“d”,表示被调用了。

    【讨论】:

      【解决方案2】:

      Base::f(int)将被Derived::f(double)覆盖,d.f 输出为d

      【讨论】:

        猜你喜欢
        • 2012-03-30
        • 2017-02-09
        • 2017-04-22
        • 2012-05-02
        • 1970-01-01
        • 2013-12-03
        • 2016-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多