近段时间工作汇总

  也有好久没来写博客了,去了深圳一趟,把档案问题解决好了,接下来就可以安心研究技术的阶段。

  这几天主要都是在练手,写代码的能力还要继续加强,打好写代码的基础才是王道,做技术,很大的一个区别就在于你愿不愿意动手,若是眼高手低,懒而不动,等于浮沙筑高台,没有实践的经验,怎能做到在开发中构建宏伟蓝图并付诸实现呢?

   技术方面,前段时间做了一个在Web上实时播放视频流并配置编码器的activex控件,觉得activex技术不错,但是搞得过于复杂。尤其是在用MFC做的时候,非常痛苦。.net是个好东西,但是那东西你不可能放到嵌入式平台上做。所以对于嵌入式设备,还是只有activex技术可用。界面是一大麻烦,处理界面是繁琐无趣的,尤其是没有一个完整设计的情况下。

   好在ATL中有一个DHTML控件,所以我就想,难道不能用HTML+CSS+Javascript来做界面,然后通过javascript来进行与C++ handler的交互吗?试验了一番,此计可行。相信很多公司也都是这么做的,directUI技术与此类似,但是我觉得directUI貌似一直也没怎么火起来,亦或是directUI都被作为技术机密隐藏了起来,不是很了解。

   今天看了一下,一个只有非静态,非虚成员函数的C++类的大小是多少?经过GCC与VC测试,大小都为1.为什么?首先是因为类的非静态非虚成员函数是不在类的内存结构中的,非静态非虚成员函数void class::func(int)实际上是func(class& obj,int),所以整个类就可以认为是一个空类。而空类的实例为了保证在内存中是独一无二的,编译器就会为空类加上一个隐含的字节。这就是为什么最后得到的值是1.

    这样就好理解为什么不提倡虚函数了,虚函数的地址保存是由vptr指向的虚表中。而非静态非虚成员函数实质上是一个固定地址的函数。当调用虚函数的时候,还要经过查表这一步,就要首先通过vptr获得vtable,再去调用虚函数。在汇编中就要多了几步:

1.获取vptr

2.获取vtable

3.从vtable中获取到实际调用的函数的地址

4.jmp到指定的地址

    在现在的处理器的架构下,一般都采用多级流水线,调用虚函数的操作会导致流水线锁定。效率到底会损失多少?有一篇比较详细且有详实比较数据的文章,可于这里查看:

http://blog.csdn.net/hengyunabc/article/details/7461919

    指针与引用的区别:我觉得指针与引用的区别可以参考指针与数组的区别。引用也是代表的一块内存区域,它可以转为指针,但是它不是指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值