Avatar ·

Why should you use a pointer instead of the object itself in C++?

Hello everyone! I'm a beginner C++ developer and often encounter situations where I don't understand why pointers are used instead of regular objects. For example, I'm writing a class to manage a game character:\n\n```cpp\nclass Monster {\npublic:\n Monster(const std::string& name) : name(name) {}\n void attack() { /* ... */ }\nprivate:\n std::string name;\n};\n\nvoid processMonster(Monster m) { // Passing object by value\n m.attack();\n}\n\nint main() {\n Monster goblin("Goblin");\n processMonster(goblin); // Copy! What if the monster is heavy?\n return 0;\n}\n```\n\nI see that many experienced programmers write like this:\n\n```cpp\nvoid processMonster(Monster* m) {\n m->attack();\n}\n```\n\nOr even create objects using `new`:\n\n```cpp\nMonster* boss = new Monster("Bos