Qt中实例化一个函数变量时加不加括号的区别,以及括号中的this的使用

news/2025/1/13 6:35:52/

一、设计一个测试小程序

废话不多说,直接上代码。
main.h函数就不多说了,没改动。直接上mainwindow.h,也没改动。看mainwindow.cpp的内容。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "test.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);test *mtest=new test(this,3);test *mtest2=new test();test *mtest3=new test;int *mvalue1=new int();int *mvalue2=new int;qDebug()<<mtest;qDebug()<<mtest2;qDebug()<<mtest3;qDebug()<<mvalue1;qDebug()<<mvalue2;qDebug()<<*mvalue1;qDebug()<<*mvalue2;
}MainWindow::~MainWindow()
{delete ui;
}

看看test.h的内容

#ifndef TEST_H
#define TEST_H#include <QDebug>
#include <QLabel>
#include <QWidget>class test: public QWidget
{
public:test(QWidget *parent = nullptr, int num=4));};#endif // TEST_H

test.cpp的内容。

#include "test.h"test::test(QWidget *parent,int num) :QWidget(parent)
{QWidget* pWidget = this->parentWidget();if(pWidget){pWidget->findChild<QLabel*>("label")->setText("init test class");}qDebug()<<"init test class";qDebug()<<num;
}

运行后,打印输出的内容为:

init test class
3
init test class
4
init test class
4
QWidget(0x12e1c6b10)
QWidget(0x12e1c6820)
QWidget(0x12e1c64e0)
0x12e093360
0x12e1c6b70
0
773385776

先是的图形界面为:
在这里插入图片描述
由此可以得出后续结论。

二、加不加括号的区别

  1. 加或不加括号都会进行初始化,并且运行构造函数。
  2. 加或不加括号,都在内存中开辟出了空间,确定了该类的位置。
  3. 只是当new的是一个int之类的数据类型,这个情况就会不太一样,加括号时,会将基础类型赋值为0,不加括号时,则是一个随机值。

三、括号中加this的含义

其实传递this,与传递别的参数没有区别,同个道理,就是在创建一个函数变量的实例时,其构造函数中的括号内有与this相同的参数类型,则可以传递this进到这个新创建的实例中去。
即该函数类的构造函数需要有一个QWidget的参数,则此时就可以在new该函数变量时,添加(this),来传递this的界面类。
至于括号中为空的解释,一般在一个类在构造函数中定义传递的参数时,都会设置一个初始的默认值,比如QWidget *parent = nullptr,因此当有默认值时,括号中则可以为空,括号为空,则自定初始化为默认值,即nullptr。


http://www.ppmy.cn/news/6124.html

相关文章

虚函数与纯虚函数

1. 虚函数与纯虚函数 虚函数&#xff1a;在类成员方法的声明&#xff08;不是定义&#xff09;语句前加virtual关键字&#xff0c;此函数就变成了虚函数。具体如下&#xff1a; virtual void function set_value();... endfunction用途&#xff1a;主要用于实现多态。在父类中…

三.keepalived介绍及工作原理

keepalived介绍及工作原理keepalived介绍及工作原理一、keepalived的介绍二、Keepalived服务的重要功能1、管理LVS负载均衡软件2、实现对LVS集群节点健康检查功能&#xff08;healthcheck&#xff09;3、作为系统网络服务的高可用功能&#xff08;failover&#xff09;三、Keep…

QT 学习笔记(十一)

文章目录一、绘图设备1. QPixmap1.1 QPixmap 简介1.2 QPixmap 演示2. QBitmap2.1 QBitmap 简介2.2 QBitmap 演示见 QPixmap 和 QBitmap 的区别。3. QImage3.1 QImage 简介3.2 QImage 演示4. QPicture4.1 QPicture 简介4.2 QPicture 演示二、QPixmap 和 QBitmap 的区别1. widget…

Android基础学习(二十四)—— View绘制

1、Activity.setContentView Activity.setContentView(layoutResID:int)PhoneWindow.setContentView(layoutResID:int)PhoneWindow.installDecor//mContentParent为DecorViewLayoutInflater.inflate(layoutResID:int, mContentParent:ViewGroup)//attachToRoot为 root ! nullL…

【数据结构】详解队列和循环队列

目录一.队列1.队列的概念及结构2.队列的实现Queue.hQueue.c二.循环队列1.循环队列的实现2.设计循环队列解题思路代码一.队列 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出…

单商户商城系统功能拆解52—财务概况

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

10.1、Django框架简介、创建第一个应用

文章目录预备知识MVC模式和MTV模式MVC模式MTV 模式Django框架Django框架简介Django框架的应用启动后台admin站点管理数据库迁移创建管理员用户管理界面本地化创建并使用一个应用bookapp项目的数据库模型创建数据库模型生成数据库表数据库上的基本操作启用后台admin站点管理自定…

PID算法总结-从公式原理到参数整定解析

目录 一、控制系统 1.1控制系统的分类 1.2 性能指标 二、PID算法的起源及特点 三、PID应用 四、PID公式原理 五、PID源码 六、PID整定方法 6.1 经验法 6.2 衰减曲线法 6.3 响应曲线法 参考文献&#xff1a; 一、控制系统 1.1控制系统的分类 分为开环控制、闭环控制和复…