Regarding static:
This method is often implemented as:
```c++
const string &getMenuText()
{
    //some logic
    return "Ability";
}
```
This will return a temporary by reference and should yield some errors (I certainly hope so). I would then have to write:
```c++
const string &getMenuText()
{
    //some logic
    static const string abilityStr("Ability");
    return abilityStr;
}
```
all over the place. This static variable resides most likely not on the stack or in the cache so I wonder if there is really a performance difference to this:
```c++
const string getMenuText()
{
    //some logic
    return "Ability";
}
```
I have no problem doing the second version but it is not always recognized as good style (at least in the c++11 world when move semantics are implemented).