• C++ explicit 关键字简介


    explicit 关键字

    防止类的初始化的时候进行隐式转换。

    class MyClass {
    	string m_s;
    	int m_a, m_b;
    public:
    	MyClass(string const& s, int const& a=10, int const& b=10):m_s(s),m_a(a), m_b(b){}
    };
    
    int main() {
    	MyClass c = string("abc");  //这里会进行隐式转换:MyClass c = MyClass(string("abc"))
        MyClass cc = {string("abc"), 11}; //这也会进行隐式转换 MyClass c = MyClass(string("abc"),11)
    	return 0;
    }
    

    以上代码都是可以通过编译的.但是在构造函数MyClass前加上exolicit,编译就会报错。因为一些项目里,隐式转换经常会造成一些难以察觉的bug,所以写类的构造函数的时候最好用上explicit。当然,用上explicit之后还是可以进行显示转换的。MyClass c = MyClss(string("ABC")); 这个是合法的。

  • 相关阅读:
    【Web】Google Chrome 浏览器调试禁用缓存
    js基础(对象)
    js基础
    css
    html
    mybatis(mapper映射文件)
    mybatis(核心配置文件的配置)
    linux三种连接方式
    spring
    mybatis(入门案例)
  • 原文地址:https://www.cnblogs.com/rookiezjz/p/12357869.html
Copyright © 2020-2023  润新知