zoukankan      html  css  js  c++  java
  • 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")); 这个是合法的。

  • 相关阅读:
    查询父节点parentNode
    008-流程控制 case 语句
    007-流程控制 if 语句
    006-条件判断
    005-sort 命令使用
    004-sed 命令使用
    003-awk 命令使用
    002-printf 命令用法
    001-cut 的用法
    002-变量
  • 原文地址:https://www.cnblogs.com/rookiezjz/p/12357869.html
Copyright © 2011-2022 走看看