void f(string &x);
..
f(string("hello1"));
...
f(new string("hello2"));
答案 0 :(得分:2)
1)从背景来看,一般而言。例如,C ++没有像Rust这样的无上下文语法。但是在这种特殊情况下,它始终是字符串结构。另请注意,它不会编译,因为您将rvalue传递给非const引用。
2)hello2在堆上创建一个新的字符串对象,而hello1则没有。另外,请注意,您不能将指针传递给期望这样的引用的函数。它不会简单地用msvc,gcc,cland等构建。