Avatar ·

为什么在C++中应该使用指针而不是对象本身?

大家好!我是一名初学C++的开发者,经常遇到不理解为什么代码中使用指针而不是普通对象的情况。例如,我写了一个管理游戏角色的类: ```cpp class Monster { public: Monster(const std::string& name) : name(name) {} void attack() { /* ... */ } private: std::string name; }; void processMonster(Monster m) { // 按值传递对象 m.attack(); } int main() { Monster goblin("Goblin"); processMonster(goblin); // 拷贝!如果怪物很重呢? return 0; } ``` 我看到很多有经验的程序员这样写: ```cpp void processMonster(Monster* m) { m->attack(); } ``` 或者直接用`new`创建对象: ```cpp Monster* boss = new Monster("Boss"); ``` 我有几个问题: 1. 如果可以直接操作对象,为什么还需要指针? 2. 什么时候应该用指针,什么时候应该用引用? 3. `M`和`M*`之间有什么区别?