现在我想编写以下代码的新版本:
const char * f() {
return "Hello";
}
const char *pf = f();
我想知道如何使用reference
代替pointer
。
我有一个想法,使用string
。
有没有更直接的方法来解决这个问题?
更新:
我仔细阅读了答案和评论。我得到了另一个想法 将返回值视为 const char数组。但是这个解决方案看起来太复杂了,并不像指针那么清晰。
答案 0 :(得分:2)
如果您想知道语法,那么定义将采用以下方式
#include <iostream>
const char ( & ( f() ) )[6] { return ( "Hello" ); }
int main()
{
std::cout << f() << std::endl;
}
或者作为@ Jarod42建议你可以使用一个类型定义,使得函数定义看起来更简单
#include <iostream>
const char ( & ( f() ) )[6] { return ( "Hello" ); }
typedef const char ( &Array_Ref )[6];
Array_Ref g() { return ( "Hello" ); }
int main()
{
std::cout << f() << std::endl;
std::cout << g() << std::endl;
Array_Ref s = g();
std::cout << s << std::endl;
}
如果你想使用std :: string,最好把函数写成
std::string f() { return ( "Hello" ); }