关于c++中函数返回应用类型-直接返回字符串常量的有关问题
关于c++中函数返回应用类型--直接返回字符串常量的问题
本人c++新手,对以下程序的编译结果表示并不明白,求各位不吝赐教。
const string &func()
{
return "hello";
}
int main()
{
cout<<func()<<endl;
return 0;
}
编译结果:
warning : 返回局部变量或临时变量的地址
本人在对func函数中 return "hello" 的理解是:直接返回对字符串常量hello的引用。
从编译结果看,貌似“hello”还被创建了副本,返回的是对副本的引用?
问题:求教这到底是怎么回事?
------解决方案--------------------
const string &func()
{
return "hello";
}
这个改成:
const char *func()
{
return "hello";
}
应当就可以了。string &因为要经过强制类型转换。不好。
直接return 返回的是一个字符串常量。没有强制类型转换。
------解决方案--------------------
是的,这个楼上给出了方法。
本人c++新手,对以下程序的编译结果表示并不明白,求各位不吝赐教。
const string &func()
{
return "hello";
}
int main()
{
cout<<func()<<endl;
return 0;
}
编译结果:
warning : 返回局部变量或临时变量的地址
本人在对func函数中 return "hello" 的理解是:直接返回对字符串常量hello的引用。
从编译结果看,貌似“hello”还被创建了副本,返回的是对副本的引用?
问题:求教这到底是怎么回事?
------解决方案--------------------
const string &func()
{
return "hello";
}
这个改成:
const char *func()
{
return "hello";
}
应当就可以了。string &因为要经过强制类型转换。不好。
直接return 返回的是一个字符串常量。没有强制类型转换。
------解决方案--------------------
是的,这个楼上给出了方法。