C++ 具有默认参数的构造函数

C++ 具有默认参数的构造函数,c++,constructor,derived-class,C++,Constructor,Derived Class,这段代码到底在做什么 这是我正在阅读的C++书中的构造函数,它对正在发生的事情进行了注释。< /P> Derived(int a=0, int b=0) : Base(a), dNum(b){ cout<< "Derived constructor." <<endl; } 因此,它将a和b传递到该代码派生自的类的基构造函数中。但INTA=0,INTB=0是怎么回事? 如果创建的对象只有1arg或没有arg,我们是否将它们设置为零?如果这样,A和B在离开范围后消失

这段代码到底在做什么

这是我正在阅读的C++书中的构造函数,它对正在发生的事情进行了注释。< /P>

Derived(int a=0, int b=0) : Base(a), dNum(b){
    cout<< "Derived constructor." <<endl;
}
因此,它将a和b传递到该代码派生自的类的基构造函数中。但INTA=0,INTB=0是怎么回事?
如果创建的对象只有1arg或没有arg,我们是否将它们设置为零?如果这样,A和B在离开范围后消失,或者在它们已经进入基类之后发生,所以它们在这样的状态下声明并不重要。

< P>这些在C++中被称为默认参数。还有C

既然你知道它们是怎么叫的,你可以用谷歌搜索它们

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


它们只是语法上的糖,意味着构造函数编码为派生的;将编译为派生的0,0

.假设Base和dNum不绑定对这些int的引用,你就没事了,因为它们会复制参数。a和b会在我们离开作用域后消失吗?你说的是什么具体的作用域?@aschepler,在查找默认参数后,您是正确的。看起来2个整数是在赋值运算符之后按值传递的,正如Mike所说,这是一种省去默认构造函数的糖衣方法。我想知道我们这样做是不是在为记忆中的一点点滴滴牺牲时间。谢谢你,迈克,这帮了大忙!