【发布时间】:2014-05-19 23:10:05
【问题描述】:
好的,我正在考虑下面的 C++ 代码:
foo (std::string str) {
// do whatever
}
foo(const char *c_str) {
foo(std::string(c_str));
}
我看了这段代码,认为它需要重写才能通过引用传递。基本上,我担心构造函数会被调用两次,一次是在 const char * 版本的 foo 中,另一次是在参数作为 std::string 传递给 foo 时,因为它被设置为通过副本传递。我的问题是:我是对的,还是 g++ 足够聪明,可以在 c 字符串版本中采用构造函数并将其称为好?好像 g++ 做不到,但我只是希望真正知道的人能澄清一下。
【问题讨论】:
-
你想委托建设吗?
-
我担心如果我将其更改为通过引用传递,我所引用的内容可能会被更改......