The key difference lies in the scope of occurrence and the virtual keyword.
I. Conditions for overload: (1) the same range (in the same class); (2) the same function name; (3) Different parameters (different numbers or types ); (4) It is irrelevant to the virtual keyword.
2. The conditions for overwriting are as follows: (1) different scopes (the two functions are in the base class and derived class respectively); (2) the function names are the same; (3) the parameters are the same; (4) basic functions must have virtual keywords.
3. The hidden condition is divided into two situations (hiding means that the function of the derived class shields the base class function with the same name)
The condition in the first case: This is similar to the overload. I call it "pseudo-overload" because it is the only difference from the overload is the scope of occurrence. (1) different scopes (the two functions are located in the base class and the derived class respectively); (2) the same function name; (3) Different parameters (different numbers or types); (4) it is irrelevant to the virtual keyword.
Condition 2: This is similar to overwrite. I call it "pseudo overwrite" because it is different from overwrite because there is no virtual keyword. (1) different scopes (the two functions are located in the base class and derived class respectively); (2) the same function name; (3) the same parameter; (4) basic functions cannot have virtual keywords.