您的位置:首页 > 其它

缺省参数

2016-04-19 16:45 375 查看
缺省参数是静态绑定的。所以,永远记住:

绝不重新定义继承而来的缺省参数

举例:

class A
{
public:
virtual void func(int val = 1)
{ std::cout<<"A->"<<val <<std::endl;}
virtual void test()
{ func();}
};
class B : public A
{
public:
void func(int val=0)
{std::cout<<"B->"<<val <<std::endl;}
};
int main(int argc ,char* argv[])
{
B*p = new B;
p->test();
return 0;
}


B*p = new B;

先调用A的构造函数然后调用B的构造函数

p->test();

调用A中的test()

然后调用A中的func()

但是由于缺省参数是静态绑定的所以val的默认值仍然是B中func()的初始值1。

所以输出的结果是B->1.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: