zoukankan      html  css  js  c++  java
  • 【M5】对定制的“类型转换函数”保持警觉

    1、隐式类型转换有两种情况:单个形参构造方法和隐式类型转换操作符。注意:隐式类型转换不是把A类型的对象a,转化为B类型的对象b,而是使用a对象构造出一个b对象,a对象并没有变化。

    2、单个形参构造方法包括两种情况:声明只有单个形参;或者声明有多个形参,但是除了第一形参,其他的形参都有默认值,也就是说,只要单个形参就能构造对象。

      注意:默认形参必须从右向左进行。思考为什么?

      调用方法的时候,从左到右使用实参初始化形参,没有提供实参,就使用默认形参值,因此默认形参必须从右向左进行。比如,有5个形参,后面三个有默认值,调用方法的时候,提供三个实参,后面两个使用默认值。

    3、隐式类型转换操作符,是一种特殊的方法,可以认为没有形参,没有返回方法,重载了目标类型的方法。

    4、隐式类型转换可能在非预期的情况下进行。也就是说,程序员本来没有这个意图,但是编译器为了使方法调用成功,偷偷地进行了隐式转换。因此,隐式类型转应该尽量避免。

    5、对于隐式类型转换操作符,最好不要提供,而是应该提供一个AsXXX()方法。

    6、对于单个形参构造方法,有两种办法。

      a、对于构造方法使用explicit,可以禁止隐式类型转换。这种情况下,可以显式地进行隐式类型转换。

      b、增加一个代理类。这是因为,隐式类型转换最多只能进行一次。增加代理类,相当于需要进行两次隐式转换才能成功。这种情况下,编译器放弃执行。

  • 相关阅读:
    很好的文章解释了Windows空连接
    python,Django安装在windows上
    无Admin权限安装python 嵌入版本和PIP,并安装Django
    DNVideoXLib研究
    基于u2net和OpenCV的人像背景替换
    基于EasyDL的人像背景替换
    VS2015 搭建 Asp.net core 开发环境
    WebForm的FileUpload控件实现选择完图片并直接上传
    WebForm使用FileUpload控件上传附件功能实现
    Oracle 调用存储过程执行动态SQL语句(无参)
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3578966.html
Copyright © 2011-2022 走看看