C/C++知识要点3——类成员函数的重载、覆盖和隐藏的差别
1、类成员函数的重载:
重载:假设同一作用域内的几个函数名字同样可是形參列表不同,我们称之为重载。
成员函数被重载的特征:
(1)同样的范围(比方在同一个类中);
(2)函数名字同样;
(3)參数不同。
(4)virtual keyword可有可无。
2、覆盖是指派生类函数覆盖基类函数。特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字同样;
(3)參数同样;
(4)基类函数必须有virtual keyword。
3、隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则例如以下:
(1)假设派生类的函数与基类的函数同名,可是參数不同。此时,不论有无virtualkeyword,基类的函数将被隐藏(注意别与重载混淆)。
(2)假设派生类的函数与基类的函数同名。而且參数也同样,可是基类函数没有virtual keyword。此时,基类的函数被隐藏(注意别与覆盖混淆)
隐藏破坏了多态性,因此一般要将隐藏换成覆盖。
參考资料:http://www.tobebatman.com/