免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6334 | 回复: 13
打印 上一主题 下一主题

[C++] 派生类把基类的普通成员函数重写为虚函数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-22 10:45 |只看该作者 |倒序浏览
  1.   6 struct A {
  2.   7     void show() {cout << "A" << endl;}
  3.   8 };
  4.   9
  5. 10
  6. 11 struct B: public A {
  7. 12     virtual void show() {cout << "B" << endl;}
  8. 13 };
复制代码
可以通过编译,但是不知道有什么作用,求指点,谢谢。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-09-22 11:22 |只看该作者
错误的做法根本不需要知道有什么作用, 这一点我深信不疑.

论坛徽章:
0
3 [报告]
发表于 2012-09-22 12:03 |只看该作者
A::show非虚,B::show虚,如此而已。
A没有虚函数,所以不用vptr什么的开销,而B需要。
从public A看来现实作用不大,很容易用错,除非和用户另外约定。如果protected/private A倒还可以理解,B的对象不被当成A的对象来用。

论坛徽章:
0
4 [报告]
发表于 2012-09-22 15:15 |只看该作者
这种写法是有用的,能用在很BT的优化用法上。

我很好奇楼主在哪里看到这种用法的。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
5 [报告]
发表于 2012-09-22 15:35 |只看该作者
回复 4# gtkmm

这能对优化有什么帮助?求教。。。

论坛徽章:
0
6 [报告]
发表于 2012-09-22 15:58 |只看该作者
gtkmm 发表于 2012-09-22 15:15
这种写法是有用的,能用在很BT的优化用法上。

我很好奇楼主在哪里看到这种用法的。

啊。。。自己无聊时想到的。。。以为会编译出错,然后发现可以通过编译。。。

请问是什么优化呢?谢谢。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
7 [报告]
发表于 2012-09-22 16:46 |只看该作者
本帖最后由 linux_c_py_php 于 2012-09-22 16:48 编辑

优化个毛, 错误用法直接忘记.

C++基础功打好即可, 看懂C++ Primer, 看懂STL源码剖析, boost永远别碰.

然后干点有用的事, 研究一辈子C++语法也无法摆脱菜鸟阶段, Linux开发学过了吗? TCP/IP懂了吗? 你是怎么访问ChinaUnix的(Web, HTTP, HTML, CSS, JS懂了吗)?

别告诉我XML你不懂, 也别告诉我你懂XML(XPATH会用?命名空间你可懂?), 更别说系统架构了, 如果你还在研究这些没用的C++语法.

只要你知道erase之后迭代器失效, 而且知道为什么失效, 容器怎么实现的, 迭代器怎么实现的? 只要你知道构造函数,拷贝构造函数,赋值函数,析构函数不分家, 只要STL源码剖析你真的全看懂, 我觉得C++足够了, 无论是性能还是编码正确性, 你都是完全合格的.

论坛徽章:
0
8 [报告]
发表于 2012-09-23 02:20 |只看该作者
OwnWaterloo 发表于 2012-09-22 15:35
回复 4# gtkmm

这能对优化有什么帮助?求教。。。


ipad不好打字..

其实就是子类和父类功能一致, 但子类是安全的, 比如对参数非法, 或是数组越界什么的有判断.
而父类什么也没有.

在可预知不会出错情况, 可以把子类转成父类处理.


比如对一个矩阵赋值, 如果可以肯定不会越界, 那么转成一个那个无保护的基类更好一些.


论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
9 [报告]
发表于 2012-09-23 09:08 |只看该作者
linux_c_py_php 发表于 2012-09-22 16:46
优化个毛, 错误用法直接忘记.

C++基础功打好即可, 看懂C++ Primer, 看懂STL源码剖析, boost永远别碰.


笑而不语 ~~

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
10 [报告]
发表于 2012-09-23 13:56 |只看该作者
你妈被X了,你笑而不语啊.

__BlueGuy__ 发表于 2012-09-23 09:08
笑而不语 ~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP