第五章 表达式

表达式这章比较简单,一般有过c的基础的人都应该问题不大,要知道连我都觉得比较简单,相信你们肯定更加容易了。

  new和delete表达式:动态创建和释放数组,定义变量时,必须指定其数据类型和名字。然而动态创建对象时,只需要指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回值指向新创建对象的指针,我们通过指针来访问对象:

                      int i;

                      int   *pi=new int;

            这个new表达式在自由存储区中分配创建了一个整型对象,并且返回此对象的地址,并且该地址初始化指针pi;

动态创建对象初始化:int i(1024);

          int *pi=new int(1024);

          string s(10,‘9’);

          string *ps=new string(10,‘9’);

        创建const对象的动态分配时必须初始化:const int *pci=new const int(1024);

delete 操作:接着上面的操作delete ps;

             delete pi;

             delete pci;

还有一个问题就是类型转换:在赋值操作当中,因为不可能更改做操作数对象的类型,因此左操作数的类型占主导地位。如果赋值操作的左右类型不相同,则右操作数会被转换为左边的类型。

强制类型转换:1.命名的强制转换:转换符号的一般形式如下:

        cast-name<type>(expression);

cast-name为:static_cast,dynamic_cast、const_cast、reinterpret_cast之一,type为转换的目标类型,而expression则是被强制转换的值。

1.dynamic_cast

支持运行时识别指针或引用所指向的对象。

2.const_cast

将转换掉表达式的const性质。

3.static_cast

编译器隐形执行的任何类型转换都可以由static_cast显示完成:

    double d=97.00;

    char ch=static_cast<char>(d);

当需要将一个较大的算术类型赋值给较小的类型的时候,使用强制类型转换非常有用。

    void*p=&d;

    double *dp=static_cast<double*>(p);

4.reinterpret_cast

通常为操作数的位模式提供较低层次的重新解释。

 

  这章呢主要是介绍了C++中的操作符的使用情况,有算术运算符,关系运算符和逻辑运算符以及位操作符等等,这章最重要的是要知道运算符的优先级的问题:从上到下,优先级依次递减:(熟悉下面的表格)

++   后自增操作  lvalue++

--    后自减操作  lvalue--

typeid   类型ID   typeid(type)

typeid   运行时类型ID  typeid(expr)

显示强制类型转换  类型转换 cast_name<type>(expr)

sizeof  对象大小

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值