C ++继承函数覆盖

时间:2013-07-01 11:43:34

标签: c++ inheritance override

我有一个问题(我的家庭作业的一部分),我不确定代码的行为。

我有一个class Father,它拥有一个函数“A”,函数“A”打印“Hello Father”。
我得到了第二堂课 - > class son:public Father,不拥有“A”功能。
我得到了第三堂课 - > class grandson:public son,拥有打印“Hello孙子”的功能“A”。

功能“A”不是虚拟的。 请忽略编译错误,我不想在这里放80行代码。

我有另一个功能:

void justPrint(const son& a) {
   a.A;
}

现在,将在以下电话中打印什么:

grandson jeff;
justPrint(jeff);

我有点困惑,儿子没有打印功能(A),所以他想打电话给父亲:: A(儿子是父亲......)
但是,我们把杰夫(孙子)送到接收儿子的功能..孙子是儿子..

我认为它会打印

  

“你好父亲”

但我很困惑......请知道任何帮助和言论......

第二件事, 如果我将进行以下调用会发生什么:

justPrint(1);

2 个答案:

答案 0 :(得分:2)

我尝试制作一个简短的代码来解决你的问题,但我没有它(使用“g ++ test.cpp -fpermissive”来编译)

#include <iostream>

using namespace std;

class Father
{
    public:
    void A(){
        cout<<"Hello Father"<<endl;
    }
};

class Son : public Father
{
};

class GrandSon : public Son
{
    public:
    void A()
    {
        cout<<"Hello GrandSon"<<endl;
    }
};

void justPrint(const Son& a)
{
    a.A();
}

int main(int argc, char* argv[])
{
    GrandSon jeff;
    justPrint(jeff);
    return 0;
}

也许你把A私下放了?


输出: 你好父亲

答案 1 :(得分:0)

void justPrint(const son& a) {
   a.A;
}

justPrint(1); if Class son contains single argument constructor with int as i/p.It will call that .