【发布时间】:2022-01-11 09:14:47
【问题描述】:
考虑以下 C++ 中的简单类实现示例。
foo.hpp
#include <vector>
class Foo {
private:
std::vector<double> X;
public:
Foo() = default;
~Foo() = default;
Foo(std::vector<double>&);
};
foo.cpp
#include "Foo.hpp"
Foo::Foo(std::vector<double>& X):
X(X)
{}
在这种情况下,向量 X 通过引用传递给类 Foo 的构造函数。不过,我开始怀疑实现中的操作 X(X) 是否会复制并将其“粘贴”到类的成员 X 中。
这是什么?
【问题讨论】:
-
它调用向量的复制构造函数。 (您只有一份)。
-
首先,您希望调用者保留他们的向量版本吗?如果没有,则创建一个移动构造函数,
Foo(std::vector<double>&& X)和std::move()到成员X中。
标签: c++ class constructor reference