本篇要学习的内容和知识结构概览
多态性
编译时的多态性称为静态联编. 当调用重载函数时, 在编译期就确定下来调用哪个函数.
运行时的多态性称为动态联编. 在运行时才能确定调用哪个函数, 由虚函数来支持.
静态联编中的赋值兼容性及名字支配规律
派生一个类的原因并非总是为了添加新的成员或成员函数, 有时是为了重新定义基类的成员函数。
#define PI 3.14159
class Point {
double x;
double y;
public:
Point(double a, double b) {
x = a;
y = b;
}
double area() {
return 0;
}
};
class Circle: public Point {
double radius;
public:
Circle(double a, double b, double r):Point(a, b) {
radius = r;
}
double area() {
return PI * radius * radius;
}
};
int main() {
Point a(1.5, 6.7);
Circle c(1.5, 6.7, 2.5);
cout << a.area() << endl; // 调用对象a的成员函数area()
cout << c.area() << endl; // 调用对象c的成员函数area()
Point * p = &c; // 对象c的地址为指向Point类型指针赋值
cout << p -> area() << endl; // 调用Point类的成员函数area()
Point & rc = c; // 对象c初始化Point类型的引用
cout << rc.area() << endl; // 调用Point类的成员函数area()
}
在派生类有同名函数的情况下
Point