C++ 多态
- 多态,即多种状态,在面向对象语言中,接口的多种不同的实现方式即为多态。多态性在 C++中是通过虚函数来实现的。
- 多态是以封装和继承为基础的。
静态多态(早绑定)
class A
{
public:
void do(int a);
void do(int a, int b);
}
动态多态(晚绑定)
- 用 virtual 修饰成员函数,使其成为虚函数
注意:
- 普通函数不能是虚函数
- 静态函数不能是虚函数
- 内联函数不能是虚函数
- 构造函数不能是虚函数
class Shape //形状类
{
public:
virtual double calcArea()
{
...
}
}
class Circle : public Shape //圆形类
{
public:
virtual double calcArea();
...
}
class Rect : public Shape //矩形类
{
public:
virtual double calcArea();
...
}
int main()
{
Shape * shape1 = new Circle(4.0);
Shape * shape2 = new Rect(5.0, 6.0);
shape1->calcArea(); //调用圆形类里面的方法
shape2->calcArea(); //调用矩形类里面的方法
return 0;
}
- 虚析构函数
class Shape
{
public:
Shape(); //构造函数不能是虚函数
virtual double calcArea();
virtual ~Shape(); //虚析构函数
}
class Circle : public Shape //圆形类
{
public:
virtual double calcArea();
...
}
int main()
{
Shape * shape1 = new Circle(4.0);
shape1->calcArea();
delete shape1; //因为是虚析构函数,所以调用子类析构函数后,也调用父类析构函数。
shape1 = NULL;
return 0;
}
- 纯虚函数 (含有纯虚函数的类叫做抽象类)
virtual int A() = 0;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: C++ 面向对象特征——封装、继承、多态
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论