QT及C++中的构造函数与析构函数
创作时间:
作者:
@小白创作中心
QT及C++中的构造函数与析构函数
引用
CSDN
1.
https://m.blog.csdn.net/xieliru/article/details/137581028
一.概念
1.什么是构造函数
类的构造函数 是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void 。构造函数可用于为某些成员变量设置初始值。
2.什么是析构函数
析构函数是 C++ 中的一个特殊的成员函数,它在对象生命周期结束时被自动调用,用于执行对象销毁前的清理工作。析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。
基本特性
- 名称 :析构函数的名称由波浪号( ~ )后跟类名构成,如 ~MyClass() 。
- 无返回值和参数 :析构函数不接受任何参数,也不返回任何值。
- 自动调用 :当对象的生命周期结束时(例如,一个局部对象的作用域结束,或者使用 delete 删除一个动态分配的对象),析构函数会被自动调用。
- 不可重载 :每个类只能有一个析构函数。
- 继承和多态 :如果一个类是多态基类,其析构函数应该是虚的。
二.C++示例
1.标准C++构造函数及类成员变量初始化:方法一
class Car {
public:
QString brand;
int year;
Car(QString b, int y) {
brand = b;
year = y;
qDebug() << "有参数构造函数调用";
}
void display() {
qDebug() << "Brand: " << brand << ", Year: " << year;
}
};
int main(int argc, char *argv[]) {
Car myCar("小米SU7", 2024);
myCar.display();
}
输出:
有参数构造函数调用
Brand: "小米SU7" , Year: 2024
2.标准C++构造函数及类成员变量初始化:方法二
class Car {
public:
QString brand;
int year;
Car(QString b, int y) : brand(b), year(y) {
qDebug() << "有参数构造函数调用";
}
void display() {
qDebug() << "Brand: " << brand << ", Year: " << year;
}
};
int main(int argc, char *argv[]) {
Car myCar("小米SU7", 2024);
myCar.display();
}
输出:
有参数构造函数调用
Brand: "小米SU7" , Year: 2024
三.QT中的构造函数与析构函数
1.建立一个mainwindow类工程
(1)mainwindow.h
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
int m_nrot;
float value;
};
(2)mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow) {
ui->setupUi(this);
}
MainWindow::~MainWindow() {
delete ui;
}
其中:
MainWindow(QWidget *parent = nullptr);
即为构造函数~MainWindow();
即为析构函数
2.类成员初始化方法
a.mainwindow.h 不用变化
b.mainwindow.cpp修改如下:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), m_nrot(1), value(0.2), ui(new Ui::MainWindow) {
ui->setupUi(this);
qDebug() << m_nrot << value;
}
MainWindow::~MainWindow() {
delete ui;
}
热门推荐
保姆级教程:容器化部署Prometheus监控系统(含详细步骤与配置说明)
研究发现:吃辣椒对糖尿病大有好处,吃干辣椒好还是鲜辣椒好?
鼻内干燥、流水样鼻涕?一文详解原因与治疗方法
《似锦》的“我本位”意识,抡出古装剧创新“三板斧”
纯电车主必看!电池衰减可以通过这几种方法检测
如何判断虎皮鹦鹉是否患有寄生虫
中国硅碳负极材料行业政策、市场规模及投资前景研究报告
豆浆的营养价值大揭秘:五大营养成分全面解析
亚冬会|在三场大赛中感受体育强国建设的脉动——来自亚冬会的观察与畅想
汤尤杯开赛,整个成都都运动起来
中学数学应用题解题方法
结婚后得知老公有欠债怎么处理
个人如何起诉借款人?法律程序全攻略
侗族鼓楼:侗寨文化的独特象征
“西江第一楼”滕王阁:古今交融的传奇,不可错过的文化之旅
手机入门调整全攻略:从基础设置到高级功能应用
福州游玩攻略:三坊七巷、西湖公园、鼓山等景点详解
实验暂未成功:超长光纤链路+GPS原子钟,天地联合探测暗物质
探秘桑树几年结果实的秘密(桑树的生长周期、成熟过程与品质变化分析)
中际旭创2024年三季度经营业绩分析报告
被挂名监事如何解除?公司注销流程详解
温和洗面奶成分科普:从成分表到品牌推荐
你以为的6种正常行为,其实是「童年创伤」的表现!
冷疗与热疗:如何选择最适合您的治疗方法?
舆论漩涡中的飞鹤,质量底线「失控」?
检察日报 | 奶粉“异物”风波
一文读懂《农村集体经济组织法》,这些变化需要注意
中国线上支付30年:一场无硝烟的争夺战
如何正确选择护肤品?
优先次序——充分利用您的时间和资源