0

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

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

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

我还有另一个功能:

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

现在,将在以下调用中打印什么:

grandson jeff;
justPrint(jeff);

我有点困惑,儿子没有打印功能(A),所以他想调用Father::A(儿子是父亲..)
但是,我们将杰夫(孙子)发送到接收儿子的函数。 ..和孙子是儿子..

我认为它会打印

“你好父亲”

但我很困惑......会得到任何帮助和解释......

第二件事,如果我拨打以下电话会发生什么:

justPrint(1);
4

2 回答 2

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 保密?


输出:父亲你好

于 2013-07-01T12:00:04.760 回答
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 .
于 2013-07-01T11:52:01.840 回答