QT Day2!!1.登录跳转界面 2.枚举类型 3.左值与右值4.面试问题

1.作业登录跳转界面

//form.h
#ifndef FORM_H
#define FORM_H#include <QWidget>namespace Ui {
class Form;
}class Form : public QWidget
{Q_OBJECTpublic:explicit Form(QWidget *parent = nullptr);~Form();public slots:void jump_slot();private:Ui::Form *ui;
};#endif // FORM_H//widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jump();    //自定义跳转信号private slots:void on_jump_clicked();    //跳转按钮的点击信号private:Ui::Widget *ui;
};
#endif // WIDGET_H//form.cpp
#include "form.h"
#include "ui_form.h"Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);
}Form::~Form()
{delete ui;
}
void Form::jump_slot()
{this->show();
}//widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_jump_clicked()
{emit jump(); //发射跳转信号this->close();
}//main.cpp
#include "widget.h"
#include "form.h"   //第二个界面的头文件#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();Form f;//将第一个界面的信号函数与第二个界面的槽函数连接QObject::connect(&w,&Widget::jump,&f,&Form::jump_slot);return a.exec();
}

改变现象:

2.枚举类型

#include <iostream>using namespace std;enum Color       //枚举是解决魔鬼数字的问题,枚举类型都是整数
{red,    //red=100,red被赋特殊值后,后面的以这个初始值为基准依次累加//red没有被赋特殊值时默认值为0,按顺序往下累加orange,yellow,green,blue = 104,  //从blue往下是以104按顺序往下排序pink,purple,
};int main()
{int num;cout << "请输入num的值:" << endl;cin >> num;enum Color c1 = red;cout << "c1 = " << c1 << endl;if(num == 104){cout << "blue" << endl;}return 0;
}

3.左值与右值

#include <iostream>using namespace std;int main()
{int num = 520;int &r1 = num;  //左值引用 左值引用必须引用有内存空间的cout << "r1 = " << r1 << "   &r1 = " << &r1 << "   num = " << num << "   &num = " << &num << endl;int &&r2 = 1314;//右值引用  &&会在堆区给1314申请一个空间cout <<"r2 = " << r2 << "  &r2 = " << &r2 << endl;//int &&r3 = num;   //错的,num是一个左值,不能被 右值引用int &&r3 = move(num);   //用move()函数可以把num强制转化为右值引用,继而可以通过右值引用使用该值//所以r3的地址与num一致,并没有申请新的空间cout <<"r3 = " << r3 << "  &r3 = " << &r3 << endl;return 0;
}

 运行结果:

 4.面试

1.多态、虚函数、纯虚函数

答:多态广义上有静态多态、动态多态(运行时)

静态多态:函数重载、运算符重载

函数重载:函数重载,是实现静态多态的一种方式,能够实现“一名多用”。

                  函数重载是指函数名相同,形参个数不同或者类型不同,但在同一作用域下。

运算符重载:运算符重载可以让运算符有特殊的意义,应用于更复杂的场景,作用于类对象之间,满足不同的运算需求。

不能重载的运算符

  • 成员运算符 .
  • 成员指针运算符 ->
  • 作用域限定符 ::
  • 计算字节大小 sizeof()
  • 三目运算符 ? :

动态多态:能够实现“一名多用”

        父类的指针或者引用,指向或初始化子类的对象,调用子类对父类重写的函数,进而展开子类的功能。

需要继承和虚函数

  • 类中有虚函数时,类里就会有一个虚指针,虚指针也满足继承
  • 虚指针在类的最前面,虚指针指向了一个虚函数表,虚函数表里记录了虚函数,包括子类对父类重写的函数。
  • 虚指针和虚函数表是实现多态的重要机制。

纯虚函数:没有实际的定义意义,没有实例化的意义,可以设置为纯虚函数,可以在子类里实现。

包含纯虚函数的类称为抽象类,不能实例化。

2.将:“引用”作为函数参数有哪些特点?

由于引用和目标占用同一块空间,在作为参数传递时,不会开辟新的空间,所以效率高,并且传引用实际上就是传变量的空间,所以也没有值传递和地址传递的区别

  1. 引用必须初始化,指针可以不初始化(野指针),指针可以指向NULL,引用不能为空,引用一定有明确的目标
  2. 指针可以修改指向,引用一旦指定目标,不能再修改
  3. 指针在使用前,需要做合理性检查,但是引用不需要
  4. 指针会另外开辟空间,但是引用不开辟空间,和目标使用同一片空间
  5. 指针的大小是8byte/4Byte,引用的大小和目标的大小一致
  6. 有多级指针,没有多级引用(因为引用不是数据类型,指针是数据类型)
  7. 有指针数组,但是没有引用数组

3.结构体与联合体有哪些区别?

相同点:结构体与联合体都是构造数据类型

可以存放不同的数据类型。

不同点:计算大小的方式不同、对齐方式不一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ScheduledExecutorService 接口

ScheduledExecutorService 继承自 ExecutorService,用于支持按计划执行任务。它允许在将来的某个时间点或以固定时间间隔执行任务。ScheduledExecutorService 是使用 java.util.concurrent 包提供的功能之一。 以下是使用 ScheduledExecutorService 的一些基本示例: 定时执行…

【DB】Windows 环境修改MySql 8.0.x 密码

目录 一. 问题 二. 说明 三. 步骤 3.1 账户 3.2 服务 3.3 文件 四. 参考 一. 问题 好久没装数据了, 最近导入数据, 次哦&#xff0c;密码忘记了&#xff0c;网上搜了搜也不靠谱; 去管网上扒拉看看如何修改吧? 二. 说明 使用超级管理员模式, 看下本机 MySQL 版本号 $…

LeetCode(力扣)78. 子集Python

LeetCode78. 子集 题目链接代码 题目链接 https://leetcode.cn/problems/subsets/description/ 代码 class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:result []self.backtracking(nums, result, 0, [])return resultdef backtracking(self, nu…

rust换源

在$HOME/.cargo/目录下建一个config文件。windows默认是C:\Users\user_name\.cargo。 config文件输入&#xff1a; [source.crates-io] registry "https://github.com/rust-lang/crates.io-index" # 使用 replace-with指明默认源更换为ustc源 replace-with ustc#…

如何实现自动化测试?

一、首先我们要清楚自动化测试的分类 以实现方式可分为UI自动化和接口自动化。UI自动化可用selenium等工具实现&#xff0c;接口自动化可用使用RobotFramework和Jmeter等工具实现&#xff0c;Jmeter也可做性能自动化&#xff0c;压力测试。 二、平时自动化测试怎么做 1. UI和…

WebGIS外包开发流程

WebGIS开发流程需要综合考虑前端和后端开发、地理信息数据处理、用户需求和安全性等多个方面。成功的WebGIS应用程序需要不断地进行更新和维护&#xff0c;以适应变化的需求和技术。WebGIS开发是一个复杂的过程&#xff0c;通常包括以下主要步骤。北京木奇移动技术有限公司&…

算法设计与分析 | 页码统计

题目&#xff1a; 一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排&#xff0c;每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码&#xff0c;计算出书的全部页码中分别用到多少次数字0,1,2,3,...…

项目时间管理-架构真题(二十四)

1、霍尔提出了系统方法的三维结构体系&#xff0c;通常称为霍尔三维结构&#xff0c;这就是系统工程方法论的基础。霍尔三维结构以时间堆、&#xff08;&#xff09;堆、知识堆组成的立体结构概括性表示出系统工程在各阶段、各步骤以及所涉及的知识范围。其中时间维是系统的工作…

[移动通讯]【Carrier Aggregation-3】【5G】

前言&#xff1a; 参考&#xff1a; 5G Mobile Communications&#xff1a;《Carrier Aggregation in 5G》 目录&#xff1a; 1&#xff1a; carrier Allocation Schemes 2&#xff1a; 网络结构 3&#xff1a; LTE CA 4: 5G CA 一 Carrier Allocation Schemes CA 主要作用…

Vue2项目练手——通用后台管理项目第六节

Vue2项目练手——通用后台管理项目 用户管理页table表格获取表格数据目录列表user.jsmock.jsindex.jsUsers.vue 新增和编辑功能Users.vue 删除功能使用的组件Users.vue 用户管理页 table表格 使用的组件和前面的表格使用的一致。 获取表格数据 目录列表 user.js import Mo…

2023高教社杯数学建模C题思路分析 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c; 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

2023高教社杯数学建模C题思路模型 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c; 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

ElementUI浅尝辄止17:Progress 进度条

用于展示操作进度&#xff0c;告知用户当前状态和预期。 常见于操作流程进度或某项任务的状态。 1.如何使用&#xff1f; Progress 组件设置percentage属性即可&#xff0c;表示进度条对应的百分比&#xff0c;必填&#xff0c;必须在 0-100。通过 format 属性来指定进度条文字…

Redis简介

简单来说 redis 就是一个数据库&#xff0c;不过与传统数据库不同的是 redis 的数据是存在内存中的&#xff0c;所以读写速度非常快&#xff0c;因此 redis 被广泛应用于缓存方向。另外&#xff0c;redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。…

内量子效率和外量子效如何测试?

碳纳米点&#xff08;CarbonNanodots&#xff09;指的是粒径尺寸小于10nm&#xff0c;并且具有荧光性质的碳球形或准球型纳米材料。和传统的金属、半导体量子点相比&#xff0c;碳纳米点具备不可比拟的优点&#xff0c;例如制备简单、成本低廉、水溶性良好、生物相容性高、毒性…

初步了解android如何锁键

百年三万六千日&#xff0c;光阴只有瞬息间。 手机下面的三个图形&#xff0c;正方形&#xff0c;园形&#xff0c;三角形分别的什么建&#xff1f;都起到什么功能&#xff1f; 三角形的那个叫返回键&#xff0c;就是可以返回你的上一个操作; 圆形是HOME键&#xff0c;按一下可…

LeetCode 23 合并 K 个升序链表

LeetCode 23 合并 K 个升序链表 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/merge-k-sorted-lists/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个链表数组…

【算法专题突破】双指针 - 三数之和(7)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;15. 三数之和 - 力扣&#xff08;Leetcode&#xff09; 题目就是要找出和为0的不重复的三元组&#xff0c; 注意三元组的每个元素是得不同的位置&#xff0c;那不重复又…

最短路Dijkstra,spfa,图论二分图算法AYIT---ACM训练(模板版)

文章目录 前言A - Dijkstra Algorithm0x00 算法题目0x01 算法思路0x02 代码实现 B - 最长路0x00 算法题目0x01 算法思路0x02 代码实现 C - 二分图最大匹配0x00 算法题目0x01 算法思路0x02 代码实现 D - 搭配飞行员0x00 算法题目0x01 算法思路0x02 代码实现 E - The Perfect Sta…

【Ubuntu22使用过程问题记录】

Ubuntu22.04 使用过程问题解决方案 1 系统基本设置 1.1 输入法 增加中文输入 1、Settings -> Region & Language -> Manage Installed Languages -> 选中chinese&#xff0c;然后apply&#xff1b; 2、Settings -> Keyboard -> Input Sources -> 点号…