具有默认参数的构造函数

时间:2017-04-29 23:25:38

标签: c++ constructor derived-class

这段代码到底在做什么?

这是我正在阅读的c ++书中的构造函数,它掩盖了究竟发生了什么。

Derived(int a=0, int b=0) : Base(a), dNum(b){
    cout<< "Derived constructor." <<endl;
}

因此它将a和b传递给该代码派生自的类的基本构造函数。但是“int a = 0,int b = 0”会发生什么? 如果仅使用1arg或没有args创建对象,我们是否将它们设置为零?如果是这样,一旦我们离开范围,a和b就会消失,或者在它们已经传递到基类之后发生这种情况,所以它们就像那样被动声明并不重要。

1 个答案:

答案 0 :(得分:1)

这些被称为&#34;默认参数&#34;在C ++中。 (还有C#。)

现在你知道他们是如何被调用的,你可以谷歌他们。

简而言之,它们允许调用者省略为它们提供值,如果调用者不提供值,则将使用给定值。

它们只是语法糖,意味着编码为Derived();的构造函数将编译为Derived( 0, 0 );