相关疑难解决方法(0)

虚函数默认参数行为

我对以下代码有一个奇怪的情况.请帮我澄清一下.

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++

34
推荐指数
2
解决办法
4436
查看次数

标签 统计

c++ ×1