软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|开发客
您现在的位置: 天极网 > 开发频道 > Boost在C++自己的墙上打洞
全文

Boost在C++自己的墙上打洞

2008-03-25 07:00作者:csdn/苏林出处:天极网责任编辑:孙蓬阳

  Boost是极有才华的程序员们编写的C++库。Boost中的编程技巧、对C++及泛型的使用方式、以及其最终实现的效果都令人吃惊,甚至叹为观止。C++是强类型语言,有严格的类型检查。而Boost使用C++实现了弱类型的效果,着实在C++的墙上打了一个洞。

  C++的强类型特征曾被视为一种优点。至今它仍然也是优点。严格的类型检查可以帮助程序员检测出代码中的错误,可以提醒程序员注意到数据的取值范围,可以规范程序员对变量的使用,并在一定程度上增加程序的易读性。可以说C++编译器对数据类型的检查筑起了一堵类型高墙,对变量任何错误的赋值、错误的使用都会被挡住,任何可能会出错的地方都会被提醒。比如下面的代码,在编译的时候是通不过的。

以下是引用片段:
  inti;
  i = "I am a string!";

  这堵墙被筑在了编译器上,而在这堵墙之后,在程序的运行期,则几乎完全没有类型检查。不仅如此,类型信息似乎已经被抛弃了。程序不能在运行期得到数据的类型信息,因此也无法在运行期依据类型选择相应的操作。

  比如在C++中就实现不了像下面这样的语句:void* makePlace( para)

以下是引用片段:
  { intlen; len = para类型数据占用空间的大小; return分配len个字节的内存;
  }

  在模板被引入之前,C++中只能用函数重载来增加可读性。使多个类型的内存分配功能都使用makePlace这个函数名,如:

以下是引用片段:
  void* makePlace (intpara)
  { returnnewchar[sizeof(para)];
  }void* makePlace (floatpara)
  { returnnewchar[sizeof(para)];
  }

  如果有很多类型,那么就要写很多个makePlace。这些makePlace函数都是相似的。这只是一个简单的例子,事实上,有很多算法、结构都是可以应用到多种数据类型的,而为每种类型重写一堆代码,显然麻烦的很。

 

共2页。 1 2 下一页 末页
相关搜索:
关注此文读者还看过
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众