zoukankan      html  css  js  c++  java
  • explicit运算符

      引用StackOverFlow中的例子:

    struct Foo {
      int value; // Foo stores an int, called value
      Foo(int v):value(v) {}; // Foo can be constructed (created) from an int
      explicit Foo(double d):value(d) {}; // Foo can be constructed (created) from a double
      // ^^^ note that keyword.  It says that it can only be EXPLICITLY created from a double
    };


    按照规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象
    在此构造函数前加了explicit后,用来抑制隐式转换
    explicit只对构造函数起作用

    Foo i = 0.0;

    This fails to compile. I said that the constructor for Foo(double) is explicit, and the above only chooses to call constructors that are non-explicit. On the other hand:

    
    
    Foo i(0.0);
    Foo i = Foo(0.0);
    
    

    these both are willing to call explicit constructors, and work fine.

    
    
     
  • 相关阅读:
    人月神话阅读笔记01
    梦断代码阅读笔记03
    构建之法阅读笔记03
    构建之法阅读笔记02
    个人课程总结
    第十六周进度总结
    计算最长英语单词链
    第十五周进度总结
    浪潮之巅阅读笔记03
    冲刺2-10
  • 原文地址:https://www.cnblogs.com/yzz0110/p/7668032.html
Copyright © 2011-2022 走看看