<C++>_C++的类型检查更严格

来源:互联网 发布:code app数据 编辑:程序博客网 时间:2024/06/16 06:19

C++作为一门面向对象的增强型语言,有着比C语言更为严谨的类型检查功能 。

       在C语言中,我们经常可以像这样定义一个变量:
     const int a = 100;
       这样的a被定义成了一个常量,在后面的代码中我们便不能通过a = 200 这样的方式修改a的值,可是我们可以这样:
     int *p = &a;
       然后再这样:
     *p = 200;
       最后读者可以尝试打印一下a的值:
     printf(“a = %d\n”, a);
       不用说,打印的结果一定是:a = 200;
       其实,对于const int a,我们给它取地址,可以发现a的地址其实是这样的类型: 
       & const int
 
      而int *p = &a这句中等于把一个 & const int 赋给了 &int,在C语言中,这样的事情是可以发生的。
 
       在C++中,这样的语句是不能被编译通过的,因为C++的内心是抵触强转的:
       

      还有如下这种情况:
      
      因为malloc出来的内存是 void * 类型,而 p 是int型。

                                                                     

                                                                                                                   广西师范大学  全宏春

0 0
原创粉丝点击