【发布时间】:2016-04-18 09:15:21
【问题描述】:
这是类定义:
class Shape { public:
virtual void draw() = 0; ...
};
class Circle : public Shape {
public:
void draw() { ... }
... };
class Rectangle : public Shape { public:
void draw() { ... } ...
};
class Square : public Rectangle {
public:
void draw() { ... }
... };
这是客户端代码:
Square* sq = new Square;
Rectangle* rect = new Rectangle;
Shape* ptr_shape;
ptr_shape = sq;
ptr_shape->draw();
rect->draw();
我正在阅读的一本书说最后一条语句是静态绑定:
但是,该语句对我来说仍然是动态绑定,因为 rect->draw 应该在运行时由 rect 的“vtable”中的指针调用。
有人知道rect->draw 是静态绑定还是动态绑定?
【问题讨论】:
标签: c++ class virtual-functions