C++ 类型强制转换函数的参数
如果代码如下所示C++ 类型强制转换函数的参数,c++,C++,如果代码如下所示 void func(std::string str) { ... } void main() { std::string p1 = "abcd"; char p2[SOME_LENGTH] = "abcd"; func(p1); // (1) func(p2); // (2) } 哪种方法在(1)和(2)之间有效?它们同样有效/低效。两者都涉及复制字符串并将副本用作参数“str”的值。更好的方法是将func声明为 void func
void func(std::string str)
{
...
}
void main()
{
std::string p1 = "abcd";
char p2[SOME_LENGTH] = "abcd";
func(p1); // (1)
func(p2); // (2)
}
哪种方法在(1)和(2)之间有效?它们同样有效/低效。两者都涉及复制字符串并将副本用作参数“str”的值。更好的方法是将func声明为
void func(const std::string &str) {
}
这样可以避免复制字符串。
func(“abcd”)
在什么意义上是最有效的?main
必须具有int
的返回类型。这可能效率较低,具体取决于func
对字符串的处理方式。例如,如果func
打算修改字符串的副本。对不起,我应该提到func()中的'str'没有更改。