c++ - 如何发送对象c ++的克隆
问题描述
所以我有一个 for 循环,所以我将一个对象发送到一个函数。我将接收到的对象的地址设置为一个指针,但这使得当我更改原始对象时,指向它的对象的地址也发生了变化,我不希望这样。是否可以在 C++ 中为我发送的对象执行 .clone() ?
解决方案
如果您的“发送”功能适用于值,您可以按值使用对象。但是,如果“发送”与指针一起使用,或者出于其他原因需要“克隆”对象,则您可以实现复制构造函数。
这是一个简单的代码示例:
#include<iostream>
class SomeClass {
int someData;
public:
// Simple constructor
SomeClass(int data) : someData(data) {}
//Copy constructor
SomeClass(const SomeClass& o) : someData(o.someData) {}
void Print() {
std::cout << someData << '\n';
}
void ChangeData(int data) {
someData = data;
}
};
void send(SomeClass* o) {
// do something
o->ChangeData(43);
}
int main() {
SomeClass obj(42);
SomeClass clonnedObj(obj);
send(&clonnedObj);
obj.Print();
clonnedObj.Print();
}
输出是
42
43