类型转换函数的参数

时间:2014-08-26 23:16:39

标签: 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)之间有效?

1 个答案:

答案 0 :(得分:0)

它们同样有效/低效。两者都涉及复制字符串并使用副本作为参数' str的值。更好的方法是将func声明为

void func(const std::string &str) {
}

这可以避免复制字符串。