我有一个问题(我的家庭作业的一部分),我不确定代码的行为。
我有一个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);
答案 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 .