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.

    
    
     
  • 相关阅读:
    校赛writeup
    memory-300——Jarvis OJ
    校赛_warmup_pwn
    sctf
    iscc-pwn1
    level3-64——Jarvis OJ
    JarvisOJ——level2
    JarvisOJ——guestbook
    Javris oj——level0
    linux 服务器 tomcat环境部署出错 重启
  • 原文地址:https://www.cnblogs.com/yzz0110/p/7668032.html
Copyright © 2011-2022 走看看