Except clarity and ease of use. If you have say, a dictionary, there's all kinds of functions that are directly tied to it. It's much easier to do and remember "mydictionary.removeItem("foobar")" than "dictionaryRemoveItem(&mydictionary, "foobar")", especially because a decent editor will show you all the methods when you type that period.
Alternatives to OOP
Few people use OOP for inheritance, and when it is used its used sparingly. Just because C++ OOP supports inheritance doesn't mean you have to use it.
I assume you want each tile to be its own object? that's probably unnecessary. Assuming this will be something like C:DDA or DF it would be simpler to just have each tile be a struct containing a few variables (tile type, status, etc) and a vector which can be used to store information about any items or special objects which are on that tile. Since the code which deals with rendering/interacting/etc each tile info is going to be common it doesn't make much sense to make every tile have its own version of it. A 2D vector of the tile structs will make things easier since generating a new tile as the player explores is just a case of adding an element to the appropriate vector.
Stop using java faggot
Except you know, writing code that doesn't have you jump around everywhere to maintain.
C++ has horrible inheritance, avoid using it. Python's inheritance is much nicer.
I use Lua.
Oh shit this is perfect.
Have you tried opening almost any book on OOP.
First of all, that's not an inheritance tree as some have said; it's a call stack. Secondly, you could deconstruct any piece of software in a similar manner if your were trying to shock people with its complexity. To be taken aback or "almost vomiting" means you don't understand contextualization, i.e. you are a no-coder.
Back to /g/ pajeet
Do you know how many callstacks were invoked between your computer and the webserver to make that post? You're like a nigger floating in the ocean who doesn't know what's under his own feet.