c++ - 带默认参数的构造函数

标签 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"是怎么回事? 如果创建的对象只有 1 个参数或没有参数,我们是否将它们设置为零?如果是这样的话,a 和 b 不会在我们离开作用域后就消失,或者在它们已经传递到基类之后是否会消失,所以像这样即时声明它们并不重要。

最佳答案

这些在 C++ 中被称为“默认参数”。 (还有 C#。)

现在您知道它们的名称了,您可以用谷歌搜索它们。

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

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

关于c++ - 带默认参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701418/

相关文章:

c++ - 如何对assert()失败进行单元测试?

c++ - 为什么即使在编译后 C 和 C++ 也不同?

c++ - 有条件地构造没有默认构造函数的成员对象

c# - 为什么我们在使用派生类型的实例时传递值?

c++ - 通过函数结束程序?

c++ - 当 friend 类具有相同名称的成员变量时会发生什么

c++ - std::pair 数组的聚合初始化

JavaScript - 为什么 "function constructors"被称为 "function constructors"?

c# - 使用 MVC/MCP 时如何在没有 switch 语句的情况下处理 UI 的派生类?

c++ - 这是 VC++ 2010 中的错误吗?