场景:
1.C++的类构造函数是复杂的语法特性,特别是带一个参数的构造函数,默认情况下会在多种情况下自动调用,让你措手不及。
2.explicit关键字就是为了阻止这种自动调用。
看一下代码,不多说了.
#include <stdio.h>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
class A
{
public:
A(int i)
{
i_ = i;
cout << "A" << endl;
}
~A()
{
cout << "~A" << endl;
}
virtual bool Init()
{
cout << "A:Init() i: " << i_ << endl;
return true;
}
private:
int i_;
};
class B
{
public:
explicit B(int i)
{
cout << "B" << endl;
i_ = i;
}
~B(){
cout << "~B" << endl;
}
bool