为什么我们只需要在头文件中声明默认参数?

Ada*_*Lee 2 c++

对于方法中的默认参数,我们只需要在头文件中声明它,我想知道为什么我们不需要在实现中指定它?

method1(int i,int j = 2)

Giu*_*nco 5

因为默认参数是在调用者中处理的.编译器会根据标头自动添加缺少的参数.函数本身不需要该信息,并且提供两次只会调用不一致.如果你想在实现中也有它,你可以将它放在注释中,但是你必须保持同步(例如method1(int i, int j /*=2*/).作为替代方案,你可以提供两个重载,以便丢失的参数由履行

method1(int i, int j);
method1(int i);

method1(int i, int j) { ... }
method1(int i) { method1(i, 2); }
Run Code Online (Sandbox Code Playgroud)

这可能会略微降低性能,因为编译器可能无法内联1-arg调用,而它始终可以使用默认参数.