我对以下代码有一个奇怪的情况.请帮我澄清一下.
class B
{
public:
B();
virtual void print(int data=10)
{
cout << endl << "B--data=" << data;
}
};
class D:public B
{
public:
D();
void print(int data=20)
{
cout << endl << "D--data=" << data;
}
};
int main()
{
B *bp = new D();
bp->print();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
关于我预期的输出
[ D--data=20 ]
Run Code Online (Sandbox Code Playgroud)
但实际上它是
[ D--data=10 ]
Run Code Online (Sandbox Code Playgroud)
请帮忙.这对你来说似乎很明显,但我不了解内部机制.
c++ ×1