-1
我读了做这样的事情如果创建本地副本,使用参数“const [variable_type]&”的目的是什么?
void print_in_reverse (const std::string & str)
{
std::string::const_iterator beg(str.cbegin()), it(str.cend());
if (it != beg)
while (--it != beg) std::cout << *it;
}
将创建传入的字符串的一个本地副本。那么,什么是上面的地步?它不是在计算上比外行人的版本更高效,
void print_in_reverse (std::string str)
{
std::string::const_iterator beg(str.cbegin()), it(str.cend());
if (it != beg)
while (--it != beg) std::cout << *it;
}
我知道通过引用是避免本地副本的方式,但我记得在C++入门读物中传递一个const引用将会创建一个本地副本 – 2014-10-30 15:37:22
您是否有确切的引用? – Borgleader 2014-10-30 15:41:42
@DonaldKnuthLied:据推测,它说传递一个不同的类型会导致创建一个临时(在调用函数中 - 不是被调用函数的本地),正如我所描述的那样。 – 2014-10-30 15:42:17