• 你“ 看不见 ” 的隐式转换


    前言

      对于隐式转换,想必你已经了解了算数转换中的“ 向上对齐 ”的概念;了解了赋值隐式转换的规律( 右值类型转换为左值类型 )。但C++中的隐式转换远不止这些,本文就将告诉你一些容易被忽略,但事实上发生了的隐式转换。

    一 数组转换为指针

      在许多情况下,数组都隐式转换为了指针。取数组元素的过程就是根据首元素和元素序号以及元素大小到指定位置取值;数组作为函数参数传递给函数的过程中也转换成了指向首元素的指针。当然,在一些其他的场合,隐式转换未必发生,比如sizeof( 数组 )就不会隐式转换为sizeof( 指针 )。

    二 逻辑判断中其他变量向布尔类型隐式转换

      if ( p ), while ( p ),在很多情况下我们都看到这样的语句( p通常是指针 )。这里其实发生了隐式转换,当p不为NULL或者不为0,则p转换成了1作为逻辑判断条件;当p为NULL或者0,则p转换成了0作为逻辑判断条件。

    三 逻辑判断中流对象向布尔类型的转换

      while ( cin >> s );这是我们在获取用户输入时常使用的语句,根据cin流获取变量后的状态,它将转换为布尔类型的0或者1。

    四 枚举变量或者成员用于计算时隐式转换为整型

      枚举变量或者成员常作为整型出现在算式中,这种情况下,枚举变量或类型都是先向上转换为整型再带入式子计算。

    说明

      1. 有很多A到B发生了隐式转换的过程会被误解为A就是B,这是不对的。

      2. 除了本文所列举的,隐式转换的情形还有很多。

  • 相关阅读:
    h5唤起app
    app唤起的完美解决方案,及阻止浏览器的默认弹窗行为
    cdn
    函数声明和函数表达式的区别
    基础系列(7)—— 结构
    基础系列(4)—— C#装箱和拆箱
    重温软件工程——对软件工程的初步了解
    基础系列(9)—— 抽象方法和接口
    自学系列--git的基础简介
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/scut-fm/p/3375048.html
Copyright © 2020-2023  润新知