小编Car*_*esi的帖子

C++始终是构造函数中的Const引用?

请考虑以下代码:

#include <iostream>
using namespace std;

class A {
public:
    A() = default;

    A(const A& rhs) {
        cout << "Copy was made!" << endl;
    }
};

class B {
public:
    A data;
    int foo;

    B(A data, int foo) : data(data), foo(foo) {
    }
};

int main() {
    A data;

    B foo(data, 10);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印出:

复制了!

复制了!

是的,它是正确的,它复制两次!

当我们传递dataB's构造函数时,第一个副本发生.当我们data从构造函数复制到memeber变量时,第二个副本就会发生.

我们知道我们不能复制1份(除非我们去heap & pointers).那么为什么我们不总是写:

B (const A& data, const int& foo, const SomeOtherType& …

c++ constructor pass-by-reference pass-by-value c++11

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