一、重写
重写是将原来的内容重新书写一遍(多态或抽象类)
二、覆盖/隐藏
将原来的内容进行覆盖或将原来的内容进行隐藏(继承或多继承)
三、重载(函数)
1、远算符重载
概念:指将基本的运算符赋于新的数据类型的运算,并且是将该运算符强制修饰为函数的形式;
能重载的运算符:算术运算符、位操作运算符、逻辑运算符、比较运算符、赋值运算符、移位运算符以及其它运算符;
注意事项:
A、除成员访问运算符“.”、成员指针运算符“.*”和“->*”、作用域运算符“::”、sizeof运算符和三目运算符“?:”、预处理符号“#”以外,C++中的所有运算符都可 以重载(其中“=”和“&”不必用户重载);
B、重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符;
C、运算符重载的实质是函数重载,遵循函数重载的选择原则;
D、重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构;
E、运算符重载不能改变该运算符用于内部类型对象的含义;
F、运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符;
G、重载运算符的函数不能有默认的参数,否则就改变了运算符的参数个数;
H、重载的运算符一般是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型的运算符的规则;
I、运算符重载可以通过成员函数的形式,也可是通过友元函数,还可以是非成员函数的形式;
2、成员函数运算符重载
关键字:operator
格式:
返回值类型 operator 重载运算符 (const类名 & obj)
{
}
例如:
people operator - (const people & obj)
{
}
实现两个类类型的数据进行相减
people1 - people2
3、友元函数远算符重载
关键字:operator
类中:
friend 返回值类型 operator 重载运算符 (const 类名 &obj1, const 类名 obj2)
类外:
返回值类型 operator 重载运算符 (const 类名 &obj1 , const 类名 &obj2)//可以访问私有成员
{
}
4、普通运算符重载
关键字:operator
类外:
返回值类型 operator 重载运算符 (const 类名 &obj, const 类名 &obj2)
{
}