默认构造函数参数

The*_*tMe 2 c++ class

#include <vector>

class A {
private:
    std::vector<int> v_;
public:
    A(int size = 100, int init_val = 100){
        for(int i=0; i<size; i++)
            v_.push_back(init_val);
    }
};
Run Code Online (Sandbox Code Playgroud)

主要是,如果我这样做:

A a(1000, 100);
Run Code Online (Sandbox Code Playgroud)

真的发生了什么?这是我第一次在构造函数中看到硬编码参数!

Spo*_*ook 6

传递的值将简单地用传递的值替换参数的默认值.

  • 定义A a;将导致调用A::A(100, 100)
  • 定义A a(5);将导致调用A::A(5, 100)
  • 定义A a(5, 6);将导致调用A::A(5, 6)