【发布时间】:2021-02-14 16:02:55
【问题描述】:
在使用指针和复制对象时,这是解决复制构造函数问题的一个不错的解决方案吗?
Person(const Person& source) {
if (source.agePtr != nullptr) {
agePtr = new int(*source.agePtr);
}
}
我只是想确保我处理不复制前一个对象地址的指针的方式是正确的。它确实解决了问题,但我只想从其他在 C++ 方面更有经验的人那里了解我的处理方式是否正确和良好的做法。我来自 C#,所以这种东西对我来说很新鲜。
Person person1{ 91 };
Person person2{ person1 };
std::cout << "Person2 before person1 change: " << person2.GetAgePtr()<< "\n";
person1.ChangePtr(1); // change fist object
std::cout << "Person2 After person1 change: " << person2.GetAgePtr()<< "\n";
【问题讨论】:
-
最直接的解决方案是根本不使用原始指针。
-
如果你问如何测试一个复制构造函数是否正在处理一个对象,那么是的。您更改源并检查副本不会更改。
-
请说明您是否真的需要一个指针,或者一个 int 是否足以满足您的需要。
标签: c++ copy-constructor