Jul*_*ian 0 c++ reference constants
我有这个代码:
#include <cstdio>
#include <string>
using namespace std;
const string & func()
{
static string staticString = "one";
printf("%s\n", staticString.c_str());
return staticString;
}
int main( int argc, char ** argv )
{
string firstString = func();
firstString = "two";
printf("%s\n", firstString.c_str());
func();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
one
two
one
Run Code Online (Sandbox Code Playgroud)
困惑我的部分是,如果我const从func()输出中删除是完全相同的.我期望它是:
one
two
two
Run Code Online (Sandbox Code Playgroud)
如果我从中获取字符串引用func()(当它没有const关键字时),为什么在我func()再次调用时它被重置?
string firstString = func();
Run Code Online (Sandbox Code Playgroud)
您正在复制返回的字符串(通过引用)firstString,因此您所做的更改firstString不应影响静态本地.如果你这样做:
const string& firstString = func();
Run Code Online (Sandbox Code Playgroud)
你将参考它,并看到你不允许修改它.如果您更改func()为返回string&并且firstString是类型string&,那么您将修改内部的字符串func().
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |