1 By ordinary we mean that not referred by pointer. We need to refrain from using the word “static”.
2 We mean that objects are referred by a pointer. It is immaterial whether such objects are on heap or not.
3 If signature is different, it is not a case of overriding. It will be treated as an independent function.
4 Explicitly type casting is an exception. However, it is of no practical use.