﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-蓝色天空-随笔分类-c++</title><link>http://www.cppblog.com/nianhuaxpj/category/8575.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 22 Oct 2008 07:37:16 GMT</lastBuildDate><pubDate>Wed, 22 Oct 2008 07:37:16 GMT</pubDate><ttl>60</ttl><item><title>虚函数</title><link>http://www.cppblog.com/nianhuaxpj/archive/2008/10/22/64694.html</link><dc:creator>小弱</dc:creator><author>小弱</author><pubDate>Wed, 22 Oct 2008 05:12:00 GMT</pubDate><guid>http://www.cppblog.com/nianhuaxpj/archive/2008/10/22/64694.html</guid><wfw:comment>http://www.cppblog.com/nianhuaxpj/comments/64694.html</wfw:comment><comments>http://www.cppblog.com/nianhuaxpj/archive/2008/10/22/64694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/nianhuaxpj/comments/commentRss/64694.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/nianhuaxpj/services/trackbacks/64694.html</trackback:ping><description><![CDATA[1、真正意义上的虚函数调用，是运行时绑定的；<br>2、什么是真正意义上的虚函数调用？通过指针或者引用执行虚函数；<br>3、通过对象执行虚函数会不会是动态绑定的？不会。<br>4、一个类是否有虚函数，就看它是否包含一个指向虚函数表的指针；<br>5、如果类本身含有virtual 声明的函数，或者继承了virtual 函数，那么它肯定会包含一个指向虚函数表的指针；<br>6、从纯抽象类或者非抽象类继承了virutal，意义上是一样的，效率上是一样的，并不因为你是纯抽象类的继承而效率变高；<br>7、虚函数调用比普通函数调用慢多少？假设这个函数仅执行 return i&nbsp; &gt; j，大概慢 15%左右（3000万 * 100次规模测试），如果是个真正有意义上的函数，效率影响可以忽略不计；<br>8、因此说虚函数慢的基本上是放屁，担心虚函数影响效率的基本上是杞人忧天；<br>9、虚函数会慢，但是那是对内联函数而言的，虚函数会忽略 inline前缀，请注意这一点；<br>10、继承层次不影响虚函数效率，如果你这个类是原始类的第10层继承，那么虚函数调用效率和第1层继承的类没有差别，当然如果你要在该函数中调用上一层的虚函数那就另当别论了；<br>11、每个类应该只有一个virtual table，而不是每个对象有一个（对象只含有指向虚表的指针），那些说虚函数增大空间开销的可以自宫了；<br>12、如果一个类含有虚函数，在构造时，使用memset(this, 0, sizeof(*this))是找死的行为;<br>13、虚函数是运行时多态，模板是编译时多态，一个动，一个是静。
<br><img src ="http://www.cppblog.com/nianhuaxpj/aggbug/64694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/nianhuaxpj/" target="_blank">小弱</a> 2008-10-22 13:12 <a href="http://www.cppblog.com/nianhuaxpj/archive/2008/10/22/64694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>