正在阅读:C++中几个比较不常用的关键字C++中几个比较不常用的关键字

2004-12-15 16:51 出处:CSDN 作者:vcforever 责任编辑:linjixiong

  例如:
  Array arr(40);//正确
  Array arr = 40;//错误

  看一下以下两种操作:
  X x;
  Y y(x);//显式类型转换
  另一种
  X x;
  Y y = x;//隐式类型转换

  这两种操作存在一个小小的差别,第一种方式式通过显式类型转换,根据型别x产生了型别Y的新对象;第二种方式通过隐式转换产生了一个型别Y的新对象.
  explicit关键字的应用主要就是上面所说的构造函数定义种,参考该关键字的应用可以看看STL源代码,其中大量使用了该关键字

  __based关键字

  该关键字主要用来解决一些和共享内存有关的问题,它允许指针被定义为从某一点开始算的32位偏移值,而不是内存种的绝对位置
  举个例子:


  typedef struct tagDEMOSTRUCT {
  int a;
  char sz[10];
  } DEMOSTRUCT, * PDEMOSTRUCT;

  HANDLE hFileMapping = CreateFileMapping(...);
  LPVOID lpShare = (LPDWORD)MapViewOfFile(...);

  DEMOSTRUCT __based(lpShare)* lpDemo;

  上面的例子声明了一个指针lpDemo,内部储存的是从lpShare开始的偏移值,也就是lpHead是以lpShare为基准的偏移值.上面的例子种的DEMOSTRUCT只是随便定义的一个结构,用来代表任意的结构.

  虽然__based指针使用起来非常容易,但是,你必须在效率上付出一定的代价.每当你用__based指针处理数据,CPU都必须为它加上基地址,才能指向真正的位置.

  在这里我只是介绍了几个并不时很常见的关键字的意义即用法,其他那些常见的关键字介绍他们的文章已经不少了在这里就不再一一介绍了.希望这些内容能对大家有一定的帮助!


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品