Avatar ·

为什么在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; } ```