常用的mainwindow.h中对构造函数是这样声明的:explicit MainWindow(QWidget *parent = 0);
,为什么有个explicit?其实是为了禁止构造函数的隐式转换。
构造函数如果只有一个参数,那么存在一个隐式转换,将参数的数据转换为该类的对象,比如String类:
class String
{
public:
String(const char* p);
String ( int n );
......
}
我们常常这样使用:String s = "abcd";
,这其实就是隐式转换。比较正规的写法应该是String s("abcd");
再看这个类:
class MyClass {
public: