关于c++中函数返回应用类型-直接返回字符串常量的有关问题

关于c++中函数返回应用类型--直接返回字符串常量的问题
本人c++新手,对以下程序的编译结果表示并不明白,求各位不吝赐教。

const string &func()
{
return "hello";
}

int main()
{
cout<<func()<<endl;
return 0;
}
编译结果:
warning : 返回局部变量或临时变量的地址
本人在对func函数中    return "hello"  的理解是:直接返回对字符串常量hello的引用。
从编译结果看,貌似“hello”还被创建了副本,返回的是对副本的引用?

问题:求教这到底是怎么回事?关于c++中函数返回应用类型-直接返回字符串常量的有关问题
------解决方案--------------------
const string &func()
{
return "hello";
}
这个改成:
const char *func()
{
return "hello";
}
应当就可以了。string &因为要经过强制类型转换。不好。
直接return 返回的是一个字符串常量。没有强制类型转换。
------解决方案--------------------
引用:
Quote: 引用:

const string &func()
{
return "hello";
}
这个改成:
const char *func()
{
return "hello";
}
应当就可以了。string &因为要经过强制类型转换。不好。
直接return 返回的是一个字符串常量。没有强制类型转换。

这个改成const char *func()确实是对的。”string &因为要经过强制类型转换“是指?如果我的定义不改变,仍然是const string &func();我应该在函数体内如何进行手动的强制转换?

是的,这个楼上给出了方法。