为什么在C++中通过指针传递对象比按值传递更好?
大家好!我刚从Java开始学习C++,对指针有些困惑。
在Java中,当我写`MyClass obj = new MyClass()`时,我总是在操作对象的引用。但在C++中,我既可以写`MyClass obj;`,也可以写`MyClass* obj = new MyClass();`。这让我很迷茫。
假设我有一个函数,它接收一个对象并对其进行操作:
```cpp
void processData(MyClass data) {
// 修改data
data.setValue(42);
}
int main() {
MyClass myObj;
myObj.setValue(10);
processData(myObj);
// myObj.getValue()仍然是10,而不是42!为什么?
return 0;
}
```
我期望调用`processData`后值会改变,但并没有。我不得不改用指针:
```cpp
void processData(MyClass* data) {
data->setValue(42);
}
int main() {
MyClass* myObj = new MyClass();
myObj->setValue(10);
processData(myObj);
// 现在myObj->getValue() == 42
delete myObj;
return 0;
}
```