C++中一些新的关键字

1、C++中的动态内存分配    new ------delete

     Tyep *pointer = new Type;                Type *pointer = new Type[N];

     delete pointer;                                    delete[] ponter;

 new 和 malloc 的区别:

       new关键字是C++的一部分,malloc 是由C库提供的函数,new以具体类型为单位进行内存分配, malloc只能以字节为单位进行内存分配。 new在申请单个类型的变量时可以初始化,如:int *p = new int(3);    malloc则不可以。

2、C++的命名空间 namespace + 名字 {...........}

    C语言中只有一个全局作用域,所有的全局标示符共享一个作用域,标示符之间可能发生冲突。

   C++中提出命名空间的概念,命名空间将全局作用域分成不同的部分,不同命名空间的标示符可以同名,命名空间可以互相嵌套,而全局作用域就是默认命名空间。

   使用方式:

    使用整个命名空间: using namespace name;

    使用命名空间中的变量: using name::variable;

3、强制类型转换

  在C语言中: (Type) (expression)  或者 Type(expression)

   这样的转换过于随便,而且难以定位,不利于代码的检查。

C++中 定义了4个强制类型转换的关键字:static_cast,   const_cast,    dynamic_cast,    reinterpret_cast。

  static_cast:

        用于基本类型间的转换,但不能用于基本类型指针间的转换

             int i=3;  char c  = static_cast<char>(i); //正确

            int *pi = &i;    char *pc = static_cast<char*> (pi);  //error 

       用于有继承关系的类对象之间的转换和类指针之间的转换。(以后再详细)

         static_cast 在编译期进行转换,无法在运行时检测类型,所以安全性不太高。

 const_cast:

     用于去除变量的const属性。

 reinterpret_cast:

     用于指针类型间的强制转换, 整数和指针类型间的强制转换。

dynamic_cast:

     主要用于类层次间的转换,还可以用于类之间的交叉转换,具有类型检查功能,比static_cast更安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值