带默认参数的构造函数
Constructor with Default Arguments
这段代码到底在做什么?
这是我正在阅读的一本 C++ 书中的构造函数,它掩盖了到底发生了什么。
Derived(int a=0, int b=0) : Base(a), dNum(b){
cout<< "Derived constructor." <<endl;
}
因此它将 a 和 b 传递到此代码派生的 class 的基本构造函数中。但是 "int a=0, int b=0" 是怎么回事?
如果创建的对象只有 1 个参数或没有参数,我们是否将它们设置为零?如果是这样的话,a 和 b 不会在我们离开作用域后就消失,或者在它们已经传递到基础中之后是否会消失 class 所以像那样动态声明它们并不重要。
这些在 C++ 中称为 "default parameters"。 (还有 C#。)
既然您知道了它们的名称,您就可以 google 它们了。
简而言之,它们允许调用者省略为它们提供的值,如果调用者不提供值,则将使用给定的值。
它们只是语法糖,意味着编码为 Derived();
的构造函数将被编译为 Derived( 0, 0 );
这段代码到底在做什么?
这是我正在阅读的一本 C++ 书中的构造函数,它掩盖了到底发生了什么。
Derived(int a=0, int b=0) : Base(a), dNum(b){
cout<< "Derived constructor." <<endl;
}
因此它将 a 和 b 传递到此代码派生的 class 的基本构造函数中。但是 "int a=0, int b=0" 是怎么回事? 如果创建的对象只有 1 个参数或没有参数,我们是否将它们设置为零?如果是这样的话,a 和 b 不会在我们离开作用域后就消失,或者在它们已经传递到基础中之后是否会消失 class 所以像那样动态声明它们并不重要。
这些在 C++ 中称为 "default parameters"。 (还有 C#。)
既然您知道了它们的名称,您就可以 google 它们了。
简而言之,它们允许调用者省略为它们提供的值,如果调用者不提供值,则将使用给定的值。
它们只是语法糖,意味着编码为 Derived();
的构造函数将被编译为 Derived( 0, 0 );