Overload 重载:
1.定义:在同一程序中的几个函数名字相同但是参数列表不同(包括类型、顺序不同),
2.注意:只有返回类型不同的函数不能重载(且会编译错误),且main函数不能重载.
3.const与重载:
(使得被修饰的变量本身无法改变的const是顶层const,其他的通过指针或引用等间接途径来限制目标内容不可变的const是底层const)
一个拥有顶层const的形参无法和一个没有拥有顶层const的形参区分开.(底层的可以)
如:
以下两个是顶层 const形参,比不会发生重载,仅仅是重复声明(编译会出现问题:同一个函数两次不同的参数)
record lookup(int a)
record lookup(int const a)//此时由于此const是使变量本身无法改变的const是顶层const
record lookup(int *a)
record lookup(int * const a)//此时由于此const是使变量本身无法改变的const是顶层const
以下两个是底层const参数(形参和引用(引用为实参)),发生了重载
record lookup(int &a)
record lookuo(const int &a)//此时const是底层const,发生了重载
record lookup(int * a)
record lookup(const int *a)//此时是底层const发生了重载
Override 覆盖:
是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
Overwrite 重写:
是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。