C++构造函数原型参数

C++ constructor prototype parameter

本文关键字:参数 原型 构造函数 C++      更新时间:2023-10-16

例如,有一个类 foo :

class foo {
public: 
      foo (int = 10);
.....
}

构造函数的原型内部有"int = 10"。那么,这意味着什么呢?Int 只是一个整数类型,不是吗?那么,给它赋值不是违法的吗? 我试图在普拉塔的书和其他任何地方找到这样的例子,但我没有找到解释。

您可以在函数声明中省略参数的名称(也可以在定义中),但仍然可以指定该参数的默认值。

考虑:

void f(int x = 10) {
    printf("%dn", x);
}
void g(int = 10);
void g(int x) {
    printf("%dn", x);
}
int main() {
    f();
    g();
    return 0;
}

结果:

10
10

在构造函数的情况下也是如此。

那么,给它赋值不是违法的吗?

这里绝对不涉及任何任务=字符在C++中可能具有完全不同的含义:

  • 分配:i = 0;
  • 初始化:int i = 0;
  • 使成员函数纯虚拟:virtual void f() = 0;
  • 指定默认参数:void f(int i = 0);

后者是你遇到的。构造函数可以像任何其他普通函数一样具有默认参数。