相关疑难解决方法(0)

复制构造函数与返回值优化

在前一个问题中,似乎一个普通的按值返回函数总是将其return参数复制到从中分配的变量中.

这是标准所要求的,还是可以通过构建'赋值'变量来优化函数,即使在函数体内也是如此?

struct C { int i; double d; };

C f( int i, int d ) {
    return C(i,d); // construct _and_ copy-construct?
}

int main() {
    C c = f( 1, 2 ); 
}
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor return-value-optimization

7
推荐指数
2
解决办法
4106
查看次数

复制构造函数不会被调用进行复制初始化或优化?

如果是复制构造函数,private那么

情况1:没有错误,编译器不关心是否在类中定义了复制构造函数.

情况2:错误,复制构造函数是私有的,当它被创建时public,它被省略.

它是否直接优化了副本而没有注意到构造函数是否已经构建private

#include <string>
using std::string;

class T
{
    string s;
    T(const T &obj):s(obj.s){}
public:
    T(const string &str):s(str){}
};

int main()
{
    T a = ("Copy Initialization");     //Case: 1

    T b = T("Copy Initialization");    //Case: 2
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++-2010

1
推荐指数
1
解决办法
606
查看次数