早上好。我无法理解在共享项目中使用 C++ 中的对象进行深浅复制背后的逻辑,因此我创建了以下示例。
int main() {
ObjectAType* objecta = ObjectAType::New();
ObjectBType* objectb = ObjectBType::New();
// some operation to populate data members of object a
objecta->Operation();
// assume I have accessors to return datamembers of object a
// I wish to make a deep copy of SOME of those data members into object b
objectb->AlignWithA(objecta);
objecta->Delete();
objectb->Delete();
return 0;
}
现在给定对象b类函数如下:
public:
void ObjectBType::AlignWithA(ObjectAType* objecta) {
this->ObjectBDataMember = objecta->DataAccessor();
}
protected:
int ObjectBDataMember;
数据访问器在类 def 中就是这样的,
public:
int ObjectAType::DataAccessor() {
return this->ObjectADataMember;
}
protected:
int ObjectADataMember;
我有几个由此产生的问题。
1) 由于在对象 b 中,数据成员被声明为
int ObjectBDataMember;
而不是作为
int *ObjectBDataMember;
为什么数据成员被访问为
this->ObjectBDataMember
而不是作为
this.ObjectBDataMember
?
2)这是深拷贝还是浅拷贝?
如果我遗漏了重要的部分,我深表歉意。我不是一个程序员,所以这样的事情很容易让我感到困惑。文学让我更加困惑。感谢您的时间。