i***h 发帖数: 12655 | 1 class Base {
void foo();
};
class Derived: Base {
virtual void foo();
};
这个和把 virtual 放在 Base 里等价么? |
I**********s 发帖数: 441 | 2 不等价. 如果在Base里declare, 在Derived里定义, 可以直接用Derived class的
instance. 现在必须在Derived的Derivative class里定义之. 此外根据其他相关class
的定义, 整个derivation structure都不一样. 总而言之, 差别大了. |
i***h 发帖数: 12655 | 3 也就是说Base function 不是 virtual 的
对我上面的例子来说等于没有virtual
(假定没有class 继承 Derived)
比如
Base *b = new Derived;
b->foo();
还是会调用 Base::foo()
这么理解对么? 谢谢
class
【在 I**********s 的大作中提到】 : 不等价. 如果在Base里declare, 在Derived里定义, 可以直接用Derived class的 : instance. 现在必须在Derived的Derivative class里定义之. 此外根据其他相关class : 的定义, 整个derivation structure都不一样. 总而言之, 差别大了.
|
X****r 发帖数: 3557 | 4 对
【在 i***h 的大作中提到】 : 也就是说Base function 不是 virtual 的 : 对我上面的例子来说等于没有virtual : (假定没有class 继承 Derived) : 比如 : Base *b = new Derived; : b->foo(); : 还是会调用 Base::foo() : 这么理解对么? 谢谢 : : class
|
c**a 发帖数: 316 | 5 但是 再 derive 一次, 那是函数 应该是虚的。
不知道对不对
【在 X****r 的大作中提到】 : 对
|
b********r 发帖数: 1080 | 6 对.
【在 c**a 的大作中提到】 : 但是 再 derive 一次, 那是函数 应该是虚的。 : 不知道对不对
|