龙宇网的专栏

路漫漫其修远兮,吾将上下而求索!

C++: 静态调用

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

阅读更多
个人分类: 学习编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C++: 静态调用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭