由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ virtual function 定义在 derived class 会怎么样?
相关主题
再问两个C++问题码工码农都应该强烈抵制那些搞恶性竞争的 IT 公司
搞不定,不得不问,一维数组跟二维数组的问题一朋友刚去了fb,298K base, fresh phd
c preprocess questiona C++ Question
这里有没有多线程算法的专家?
相关话题的讨论汇总
话题: derived话题: base话题: class话题: virtual话题: c++
进入Programming版参与讨论
1 (共1页)
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 一次, 那是函数 应该是虚的。
: 不知道对不对

1 (共1页)
进入Programming版参与讨论
相关主题
再问两个C++问题码工码农都应该强烈抵制那些搞恶性竞争的 IT 公司
搞不定,不得不问,一维数组跟二维数组的问题一朋友刚去了fb,298K base, fresh phd
c preprocess questiona C++ Question
这里有没有多线程算法的专家?
相关话题的讨论汇总
话题: derived话题: base话题: class话题: virtual话题: c++