面试题:C++中复杂对象场景下拷贝构造函数的调用优化
已知有一个包含动态数组成员的C++类 `BigObject`:
```cpp
class BigObject {
private:
int* data;
int size;
public:
BigObject(int s) : size(s) {
data = new int[size];
for (int i = 0; i < size; ++i) {
data[i] = i;
}
}
BigObject(const BigObject& other) : size(other.size) {
data = new int[size];
for (int i = 0; i < size; ++i) {
data[i] = other.data[i];
}
}
~BigObject() {
delete[] data;
}
};
```
现在有一个函数 `process` 接收 `BigObject` 作为参数并返回一个 `BigObject`:
```cpp
BigObject process(BigObject obj) {
// 对obj进行一些操作
return obj;
}
```
在 `main` 函数中调用 `process`:
```cpp
int main() {
BigObject original(1000);
BigObject result = process(original);
return 0;
}
```
这里拷贝构造函数会被多次调用,如何优化以减少不必要的拷贝构造函数调用?请说明优化的原理和修改后的代码。