QWidget widget = QWidget();为什么这样qt就编译不通过
为什么int d = int();qt编译通过;
private:
Q_DISABLE_COPY(QWidget)
这是QWidget.h中的内容,这句话有两个意思:1.QWidget的拷贝构造函数是private类型,2.禁用QWidget的拷贝构造函数,而QWidget widget = QWidget();会调用拷贝构造函数,所以会报错。
int d = int()这里,int是基本类型,不是类,也就没有拷贝构造函数一说,也就是个强制类型转换,所以能编译通过。
因为QObject把拷贝构造函数和拷贝赋值函数都禁用了,所有QObject及从QObject派生的派生类的对象都是不能拷贝的。
你这样写肯定报错啊,都没有这样定义的语法。
而且QWidget();根本没有这样的函数用于返回Qwidget对象。
int() 是你自己定义的函数,里面返回一个int类型数据,然后你再用int类型变量去接收,所以这样是可以的。
你只能这样去写:QWidget *widget = new QWidget(); 或者 QWidget widget;
我去看了一下QT的帮助文档,没有QWidget()这样的函数方法,所以你那些写肯定会报错!
报错很明确,QWidget的无参构造函数是private的
你看看它是不是有多个重载,应该需要你传入参数的
https://blog.csdn.net/zhjixi495/article/details/103197312
截取其中部分图: