可能重复:
如何初始化具有默认值的类的函数参数
#include <string>
void foo1(const std::string& s = std::string());
void foo2(std::string& s = std::string());
void foo3(const std::string s = std::string());
void foo4(std::string s = std::string());
Run Code Online (Sandbox Code Playgroud)
error at foo2(): default argument for ‘std::string& s’ has type ‘std::string {aka std::basic_string<char>}’
我理解编译器的观点,但我不知道这也不适用于foo1()它.