关闭

C++: 静态调用

1576人阅读 评论(1) 收藏 举报

#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)进行重写,
它可以调用基类的默认方法,这是虚函数的默认行为。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:432461次
    • 积分:6300
    • 等级:
    • 排名:第3883名
    • 原创:188篇
    • 转载:29篇
    • 译文:1篇
    • 评论:68条