zoukankan      html  css  js  c++  java
  • c++ explicit的含义和用法

    explicit用于修饰类的构造函数,表明该构造函数是显式的,

    用于用户自定义类型的构造函数,制定它是默认的构造函数,不可用于转换构造函数。因为构造函数有三种,1 拷贝构造函数 2 转换构造函数 3 构造函数

    当一个类存在多个构造函数时,explicit修饰的那个构造函数就是默认的。

    class string{

    private:

       int size;

       int capacity;

       char* buff;

    public:

       string();

       string(int size);

       string(const char*);

       ~string();

    };

    int main(){

    string s="Hello";

    int ns=0;

    s=1;

    }

    s=1,本来想ns=1,但是写错了,写成了s=1,因为有个构造函数是接受一个int类型的参数,所以会试着用string(1)去

    解释它,为了避免类似的错误,我们会在前面加上explicit关键字,

    explicit  string(int size)

    一个很好的例子:

    class People{

    public:

       int age;

       explicit People(int a){

         age=a;

        }

    };

    void foo(void){

    People p1(10);        //方式一

    People* p_p2=new People(10);

    People p3=10;         //方式三,这个会报错,如果去掉explicit的话就不会报错。

    }

    gcc -S people.cpp

  • 相关阅读:
    超级楼梯
    hdu1040
    hdu2033(惭愧)
    hdu2032杨辉三角
    hdu1013Digital Roots
    hdu2031
    Linux信号(signal) 机制分析
    android init重启service(进程)
    [android] init进程 .rc文件中service、action的parsing
    oom_adj
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2305947.html
Copyright © 2011-2022 走看看