我有一个小的C ++代码片段,也许有人可以在这里解释operator =的工作原理吗?
#include <iostream>
#include <string>
using namespace std;
static wstring & test() {
static wstring test2;
return test2;
};
int main()
{
test() = L"Then!";
wcerr << test() << endl;
}
答案 0 :(得分:1)
函数test()
返回对静态变量test2
的引用(不是副本)。静态关键字使函数test
在调用之间保持变量test2
的值。因此,当您调用test()
时,它会返回引用,使您可以在test2
内部更改test()
的值。这导致wcerr << test2 << endl;
打印出“然后!”。
请注意,静态关键字根据上下文具有不同的含义。将函数设为静态会使该函数仅对文件中的其他函数可见。如果将静态函数放在标头中,则该标头的每个#include都会对该函数减速。
您可能想说的是
#include <iostream>
#include <string>
using namespace std;
wstring & test() {
static wstring test2;
return test2;
}
int main()
{
test() = L"Then!";
wcerr << test() << endl;
}
答案 1 :(得分:0)
函数test()
返回对static
变量test2
的引用。引用是指变量;您可以用变量代替引用。
这等效于代码:
static wstring test2;
int main()
{
test2 = L"Then!";
wcerr << test2 << endl;
}
在您喜欢的C ++参考中搜索“参考”。