C++: 静态调用

本文展示了C++中如何通过指针调用基类的虚方法,例如`pr->Shape::draw();`。这个例子中,虽然`Rectangle`和`Ellipse`都继承自`Shape`,但`Ellipse`没有重写`draw()`方法,因此默认调用基类的实现。在程序结束时,正确地释放了动态分配的对象并置指针为NULL。
摘要由CSDN通过智能技术生成

#include <iostream>
#include <string>
using namespace std;

class Shape
{
public:
 Shape(void) {}
 ~Shape(void) {}
 virtual void draw(void) const { cout<<"Shape draw"<<endl; }
};

class Rectangle : public Shape
{
public:
 Rectangle(void) {}
 ~Rectangle(void) {}
 void draw(void) const { cout<<"Rectangle draw"<<endl; }
};

class Ellipse : public Shape
{
public:
 Ellipse(void) {}
 ~Ellipse(void) {}
};

int _tmain(int argc, _TCHAR* argv[])
{
 Shape *pr = new Rectangle;
 pr->draw();
 pr->Shape::draw();
 delete pr;
 pr = NULL;

 Shape *pe = new Ellipse;
 pe->draw();
 delete pe;
 pe = NULL;
}

OUT:

Rectangle draw
Shape draw
Shape draw

在上面的例子中,通过指定一个完整的class名称来调用基类的虚方法(pr->Shape::draw();),
这里就是静态调用。通过该方法我们可以通过一个指向子类的指针调用基类的方法。我们也可以
不用改写(override)该虚方法(draw),在子类(Ellipse)中没有对虚方法(draw)进行重写,
它可以调用基类的默认方法,这是虚函数的默认行为。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值