zoukankan      html  css  js  c++  java
  • explicit

    在C++中,如果类的某个构造函数只有一个参数,那么编译器在编译的时候,就会有一个默认的隐式转换操作:将该构造函数参数的类型转换为该类的类型。

    举例:

    #include <iostream>

    class
    Test { public: int m_value; public: Test(int value) { this->m_value = value; } }; int main() { Test test = 10; std::cout << test.m_value << std::endl; return 0; }

    如上的Test test = 10操作是正确的,因为默认的隐式转换将构造函数参数的类型转换为当前类的类型,这样该构造函数就像拷贝构造函数一样,让Test test = 10的操作是可行的。


    如果改成下面的操作,便会编译失败

    #include <iostream>
    
    class Test
    {
    public:
        int m_value;
    public:
        explicit Test(int value)
        {
            this->m_value = value;
        }
    };
    
    int main()
    {
        Test test = 10;
        std::cout << test.m_value << std::endl;
    
        return 0;
    }

    explicit:明确的(显式的),表示该构造函数是显式的,不能进行默认的隐式转换

  • 相关阅读:
    cf 785#
    hdu 4920 Matrix multiplication
    poj 2443 Set Operation
    bzoj 3687: 简单题
    洛谷 三月月赛 C
    洛谷 三月月赛 B
    洛谷 三月月赛 A
    bzoj 3156: 防御准备
    bzoj 3437: 小P的牧场
    bzoj 3675: [Apio2014]序列分割
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9565975.html
Copyright © 2011-2022 走看看