我正在浏览Scott Meyers的一些幻灯片,它有以下代码示例
typedef std::vector<T> TVec;
TVec createTVec(); // factory function
TVec vt;
…
vt = createTVec(); // in C++98, copy return value to - vt, then destroy return value
我不明白以下几点,如果有人能澄清这一点,我将不胜感激:
是什么
vt = createTVec();
假设是vt = createTVec;
??
答案 0 :(得分:1)
这是一个功能,你有一个声明:
TVec createTVec(); // factory function
所以它可能看起来像:
TVec createTVec() {
TVec ret;
// initialize it
return ret;
}
vt = createTVec();
它将createTVec()函数的结果赋给vt变量。
在C ++ 98中,此函数将使用临时返回向量,因为将使用C ++ 11移动语义。但是,实际上编译器可能(并且可能会)在这种情况下执行(N)RVO - 返回值优化。