c++&COM...

  C++的主要目标是允许程序员建立用户自定义类型,而且可以在原始实现环境之外重复使用,就是我们今天见到的类库,这样虽然重用比较容易但是重新实现却比较难,人家写的贝,而且要编写一个重用性很好的C++类非常的困难.C++库一直都以源代码的形式分发,这样编译好的可执行代码将成为客户应用中不可缺少的,代码的重复引用浪费了程序的空间,所以出现了DLL,但当我们在DLL中发现一个错误时,我们就要面对C++的弱点之一:
  C++缺少二进制级的标准,为了允许操作符重载和函数重载,C++编译器任意篡改每一个入口点的符号名,以便允许同一个名字具有不同参数类型有多个用法,这项技术成为名字改编,并且不同的编译器使用不同的方案,消除改编现象可以使用extern "C",但只对全局函数有用成员函数没有办法,另一种技术是使用DEF文件它允许引用符号化名为不同的引入符号,(用次序号???)而且编译器对异常的抛出各有各的办法,汗...
  C++的封装问题:虽然C++提供了语法上的封装但在二进制的情况下编译好的C++程序仍然需要知道详细的内存布局,即使只改动DLL中的类也可能使程序引用不该属于合法范围的内存,通常的解决办法是使用不同的版本名字,或是使用多一个类用作接口类,接口类中指包含真实类的指针,避免了真实类的大小改变,而引起的内存越界,但我们不得不把真实类中的所有方法都复制一份给接口类,另一种办法是使用虚函数...
  将C++该为可移植性的需要使用虚函数,当需要改变接口数目添加另外一个接口时,可以调用dynamic_cast检测类是否继承自一个比较新的类,如果是则返回一个新的对象指针,如果不是则使用一个功能保守的指针,我们可以在对象中维护一个引用计数,就可以知道现在有多少正在使用的指针,如果没有在使用这个对象的指针,即这个引用计数是0,那我们就可以销毁这个对象,其实这就是组建对象模型COM.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值