zoukankan      html  css  js  c++  java
  • 从C到C++ (3)

    从C到C++ (3)

    一、    C++中增加了引用

         1、引用是给某一个变量起别名。引用的一般格式:

                     类型 &引用名 = 变量名

          定义引用时一定要初始化。在实际应用中,引用一般用作参数传递与返回值

                  2、const 引用

                     const 引用是指向const对象的应用

                  3、引用作为返回值

                     函数返回引用的一个主要目的是可以将函数放在赋值运算符的左边,注意:不能返回对局部变量的引用。

                  4、引用与指针的区别

                          1)引用访问一个变量是直接访问,而指针是间接访问。

                          2)引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。

                          3)引用一经初始化不能在引用其他的变量,而指针可以。

                               尽可能的使用引用,不得已使用指针(引用的效率高)。

    二、    C++中提供了内联函数

      当程序执行函数调用时,系统要建立桟空间,保护现场,参数传递以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。对于代码短小、功能简单,但使用频率很高的情况下,使得程序执行效率降低。

      内联函数与带参数宏区别:

        1)内联函数在调用时会进行类型检查,另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏调用时只是用实参简单的替换形参。

        2)内联函数是在编译的时候,在调用的地方将代码展开的,而宏则是在预处理时进行替换的。

          在C++中建议采用inline来替换带参数的宏,C++高层次编程用cons、enum、inline替换宏,低层次编程宏是很灵活的。

    三、    新的类型转换运算符

        旧式转换:

                   (T)expr

                   T(expr)

        新式转换:

                  const_cast<T>(expr)                //用来移除对象的常量性,通常为了函数能接受这个实际参数

                  static_cast<T>(expr)                //一般的类型转换

                  reinterpret_cast<T>(expr)         //数据以二进制存在形式重新解释(相当强制类型转换)

                  dynamic_cast<T>(expr)            //执行“安全向下”转型操作,无法用旧式方法进行转型的操作

      强制类型转换reinterpret_cast不做任何对齐操作,原先内存模型是什么样转换后还是什么样,只是类型转换了,此方法是不可移植的。而旧式强制类型转换”()”会做一些对齐操作。

  • 相关阅读:
    lianjie
    分享页(把末尾的JS函数换成这个)
    面试题:Java回形数组
    Keycloak暴力检测和OTP验证
    Mybatis 使用Spring boot AOP +自定义注解+PageHelper实现分页
    基于Keycloak权限管理服务的架构
    如何访问被Keycloak保护的后端API
    KeyCloak实战|Vue项目集成Keycloak
    LeetCode|788. Rotated Digits
    LeetCode|413. Arithmetic Slices
  • 原文地址:https://www.cnblogs.com/uriel/p/3737320.html
Copyright © 2011-2022 走看看