zoukankan      html  css  js  c++  java
  • C++里那只无形的手

      在编程过程中我们总是能遇到一些莫名奇妙的问题,先来看个有趣的列子。

      大家可以想想结果是什么?为什么会这样呢,就是因为byte类型是8位,最大数位256了,超了之后就从头再来。c++是一个对数据类型有着非常严格检查的语言。在进行操作过程中要时刻牢记,数据在干什么,调用谁的操作符。那些地方会进行隐式的转换呢?最多的就是在传值过程中,通常我们将短数据类型转换为长数据类型没有问题,不足位填充0就可以了。那长数据转换为段数据类型只能忍痛割爱将超出部分拿掉。这就是数据切片,我们在c++里,时时刻刻都在创造新的数据类型,在我们传值,转换过程中一定要注意。当然了传递指针问题不大。

      今天主要说说数据对象操作的隐式转换问题,在下面的代码里我重载了操作符*。首先这个类的对象相互调用对于乘法交换律没有什么问题了。可是和一个整形可以吗?注释的最后一行就是问题行。为什么第一行可以,下面一行不行呢。让我们来分析第一行的过程。

        

      相当于上面这样的操作,所以可以正常编译通过,而下面一行就是直接调用int的*操作符,自然编译器是不能通过的。在这里要牢记,编译器可以隐式的转换参数表里列出的参数,而不会对成员变量进行隐式的转换。

     

  • 相关阅读:
    CSS3——复杂选择器
    单元测试覆盖率设置
    你必须了解的「架构」小历史
    js正则表达式:学习网址和部分正则验证
    转: js实现全角半角检测的方法
    Linux and the Unix Philosophy(1)
    HTML DOM 对象
    理解css中的 content:" " 是什么意思
    JS
    js
  • 原文地址:https://www.cnblogs.com/fengju/p/6174362.html
Copyright © 2011-2022 走看看