inline
我通过添加关键字学习了 C++17 处理仅标头库的方法:
#include <iostream>
#include <string>
using namespace std;
struct C {
static const inline string N {"abc"};
};
int main() {
cout << C::N << endl;
return 0;
}
运行上面的代码abc
按预期返回。
但是,如果我尝试使用 C++17 之前的样式,如下所示:
#include <iostream>
#include <string>
using namespace std;
struct C {
static std::string& N() {
static std::string s {"abc"};
return s;
}
};
int main() {
cout << C::N << endl;
return 0;
}
我得到了1
而不是预期的结果abc
。我想知道为什么以及如何解决它?