[FZH] c++中的override和覆盖的区别

Mike Manilone crtmike at gmx.us
Sun Jul 15 10:10:15 UTC 2012


C++ 還眞是麻煩啊。這兩者在子類的使用上毫無區別,結果一類型轉換就亂了……

GObject 解释這個太容易了。。

重定義:只是在子類定義一個同名函數(除去前綴)。用父類的接口和子類的效果
不同。
覆盖:父類在 class 裏登記虚函數指針,子類在自己的 class_init 裏覆盖之,
不論使用父類的接口還是子類的,都不會亂了。

唉呀,是不是太麻煩了,說不定會吓跑 GObject 的潜在學習者呢。

於 日,2012-07-15 於 14:03 +0800,Zind 提到:
> 父类与子类的成员函数的 signature 相同,应该叫 redefine 重定义,而不是
> override 覆盖。
> 父类与子类的成员函数的 signature 相同,且父类的成员函数为 virtual,才
> 能称为 override 覆盖。 
-------------- 下一部分 --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.fedoraproject.org/pipermail/chinese/attachments/20120715/1b5ed2b7/attachment.sig>


More information about the Chinese mailing list