您的位置:首页 > 编程语言 > C语言/C++

C++: 静态调用

2006-05-22 09:57 183 查看
#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)进行重写,
它可以调用基类的默认方法,这是虚函数的默认行为。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: