我正在使用 protobuf,并且我正在将 const 引用分配给另一个引用,如果我使用,这似乎会触发复制构造函数{}
,但如果我使用()
.
例如,
// Protobuf Messages
message Test {
string x = 1;
}
message List {
repeated Test tests = 1;
}
int main()
{
List l {};
const google::protobuf::RepeatedPtrField<Test>& a = l.tests();
const google::protobuf::RepeatedPtrField<Test>& b = a; // 1
const google::protobuf::RepeatedPtrField<Test>& c {a}; // 2
const google::protobuf::RepeatedPtrField<Test>& d (a); // 3
}
Call (1, 3) 工作正常,但 Call (2) 似乎调用定义为的复制构造函数
template <typename Element>
inline RepeatedPtrField<Element>::RepeatedPtrField(
const RepeatedPtrField& other)
: RepeatedPtrFieldBase() {
MergeFrom(other);
}
有人可以帮我理解为什么 Call (2) 创建一个副本,我似乎误解了初始化列表中的一条规则。
谢谢...