Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Visual C++ > 如何在强制类型中定义NULL
【标  题】:如何在强制类型中定义NULL
【关键字】:类型,NULL
【来  源】:网络

如何在强制类型中定义NULL

Your Ad Here

    看C的历史,它并没有产生强制类型的指针。在C中,你可以很容易的给指针赋以数字值或者混合不同类型的指针。C++的创造者为了回避这个混乱的局面,因为它可能会在运行时造成一些让人难以理解的错误。因此,C++的指针是强制类型。


因此C和C++定义NULL是不同的。C++的编写者必须一定NULL好像0或0L。比如:

// C++ implementations usually define NULL this way
#define NULL 0
#define NULL 0L

对比C,C的编写者可以定义NULL为各种形式,包括一下这种:

// C compilers may define NULL this way
#define NULL ((void*)0)

在C++中,没有明白的造型,void*是不会隐讳的转换成为其他类型的指针。如果C++保留C的习惯,如C++的语句为:

char * p = NULL;

可以扩大为:

file://compile time error: incompatible pointer types
char * p = (void*) 0;

但是在C++中,void*的隐含模式允许为其他的数据指针。在优先表示NULL中,C++通常用0好过void类型的指针。事实上,C++鼓励用0代替NULL。例如:

int *p=0;
string *ps=new string;
delete ps;
ps=0; file://mark ps as deleted

尽管这两种NULL的表示方法的区别对于用户来说不是那么重要,但是在交叉式平台的开发中,这两种方法的区别是很重要的。

找到虚指针的位置:【上一篇】
在比较语句中替换操作数的顺序来避免人为错误:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 用调用者与被调用者的角度看组件与设计模式
  • DrawDib函数组
  • css手册(一)Background 背景
  • 读核日记(六)
  • 使用AutoMake轻松生成Makefile
  • RMI的小例子,不理解的来这看看吧,也欢迎大家拍我。
  • 信息化项目在IT部门如何推动?
  • 自己是不是有点太过于在乎她了
  • 病毒名称 可可虫(Worm.Cocoazul.d)
  • 今天解决了一个怪问题!
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.