C++关键字:explicit

#include "pch.h"
#include <iostream>

using namespace std;

class BaseClass {
public:
    BaseClass() {}
    /*explicit*/ BaseClass(int num) {
        std::cout << "构造函数时:" << Age << std::endl;
        Age = num;
    }

    ~BaseClass() {
        cout << "析构时:" << Age << endl;
    }
private:
    int Age = 9;
};

int main()
{
    BaseClass bc;//此时为默认参数
    cout << "地址:" << &bc << endl;
    bc = 10;//此时Age被改为10
    cout << "地址:" << &bc << endl;
}

由输出结果可以看出,bc=10;这一句隐式转换了类型,这回导致一些bug,为了防止这种难以发现的问题,最好在构造函数前使用explicit关键子

posted @ 2019-02-17 00:32  哎呦,豹豹大人  阅读(147)  评论(0编辑  收藏  举报