2024.9.6 作业

news2024/9/21 20:34:49

手写unique_ptr指针指针

代码:

#include <iostream>
#include <stdexcept>

template <typename T>
class unique_ptr {
public:
    // 构造函数
    explicit unique_ptr(T* ptr = nullptr) : m_ptr(ptr) {}

    // 析构函数
    ~unique_ptr() {
        delete m_ptr;
    }

    // 禁止复制构造函数
    unique_ptr(const unique_ptr&) = delete;

    // 禁止复制赋值运算符
    unique_ptr& operator=(const unique_ptr&) = delete;

    // 移动构造函数
    unique_ptr(unique_ptr&& other) noexcept : m_ptr(other.m_ptr) {
        other.m_ptr = nullptr;
    }

    // 移动赋值运算符
    unique_ptr& operator=(unique_ptr&& other) noexcept {
        if (this != &other) {
            delete m_ptr;
            m_ptr = other.m_ptr;
            other.m_ptr = nullptr;
        }
        return *this;
    }

    // 重载*和->运算符
    T& operator*() const {
        return *m_ptr;
    }

    T* operator->() const {
        return m_ptr;
    }

    // 获取原始指针
    T* get() const {
        return m_ptr;
    }

    // 释放所有权
    T* release() {
        T* temp = m_ptr;
        m_ptr = nullptr;
        return temp;
    }

    // 重置智能指针
    void reset(T* ptr = nullptr) {
        T* old_ptr = m_ptr;
        m_ptr = ptr;
        delete old_ptr;
    }

private:
    T* m_ptr;
};

int main() {
    unique_ptr<int> ptr1(new int(10));
    std::cout << *ptr1 << std::endl;

    unique_ptr<int> ptr2 = std::move(ptr1);
    std::cout << *ptr2 << std::endl; // 输出 10
    std::cout << *ptr1 << std::endl; // 不会输出什么东西

    return 0;
}

手写登录界面,不允许拖拽,要求尽可能的美观

代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLineEdit>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_loginButton_clicked();

private:
    QLineEdit *usernameEdit;
    QLineEdit *passwordEdit;
    QPushButton *loginButton;
};

#endif // WIDGET_H
#include<QDebug>
#include "widget.h"
#include "ui_widget.h"
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLabel>
#include <QIcon>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(900, 600); // 设置窗口大小
    setWindowTitle("登录界面");
    setWindowIcon(QIcon("D:\\Qt\\msg\\homework\\png\\1.png")); // 设置窗口图标
    QWidget *window = new QWidget;
    window->setAutoFillBackground(true); // 确保背景图像填充整个窗口
    window->setStyleSheet("QWidget { background-image: url(D:/Qt/msg/homework/png/2.png); }");

    QVBoxLayout *layout = new QVBoxLayout(this); // 创建布局

    usernameEdit = new QLineEdit;
    usernameEdit->setPlaceholderText("用户名");
    layout->addWidget(usernameEdit);

    passwordEdit = new QLineEdit;
    passwordEdit->setPlaceholderText("密码");
    passwordEdit->setEchoMode(QLineEdit::Password);
    layout->addWidget(passwordEdit);

    loginButton = new QPushButton("登录");
    layout->addWidget(loginButton);

    connect(loginButton, &QPushButton::clicked, this, &Widget::on_loginButton_clicked);

    // 应用样式表
    this->setStyleSheet("* { "
                        "    font-size: 30px; " // 为所有控件设置字体大小为14px
                        "} "
                        "QLineEdit { border: 3px solid #ccc; padding: 15px; }"
                        "QPushButton { background-color: #4CAF50; color: white; border: none; padding: 10px; border-radius: 5px; }"
                        "QPushButton:hover { background-color: #45a049; }");
}

Widget::~Widget()
{
}

void Widget::on_loginButton_clicked()
{
    // 获取行编辑器中的内容
    QString account = usernameEdit->text();
    QString password = passwordEdit->text();

    // 判断账号和密码是否正确
    // 这里需要根据实际情况来验证账号和密码,以下只是一个示例
    if (account == "123456" && password == "123456") {
        // 登录成功
        qDebug() << "登录成功";
        this->close();
    } else {
        // 登录失败
        qDebug() << "登录失败";
        passwordEdit->clear();
    }
}
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

结果:

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

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

相关文章

设置GB/T35114服务

GB/T35114服务是下联模式&#xff0c;支持GB/T35114标准A级双向认证&#xff0c;支持国密系列硬件设备。 操作步骤 在配置-》设备-》级联配置-》GB服务配置 进行编辑。 1、点击 编辑 2、修改国标服务器地址 3、如果其他参数也需要修改&#xff0c;都可自定义&#xff0c;除了国…

FME教程:通过更新读模块,解决FME读取shapefile数据,提示意外输入,“在转换中,某些读取的要素与工作空间的要素类不匹配……”的问题

目录 一、问题情况 二、解决方法 一、问题情况 在使用制作好的FME模板读取shapefile数据时&#xff0c;有时候会遇到弹窗提示意外输入&#xff0c;模板无法运行&#xff0c;在日志信息中警示“在转换中&#xff0c;某些读取的要素与工作空间的要素类不匹配。可能由于读模块的…

2024年全国大学生数学建模竞赛(E题) 建模解析|交通流量管控|小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;实现综合建模。独创复杂系统视角&#xff0c;帮助你解决国赛的难关呀。 完整内容可以…

【前端学习】AntV G6-06 使用图算法

课程链接 图算法 Algorithm | G6 (antgroup.com) 【例子 pageRank】 ​​​​​​力导向图布局 | G6 (antgroup.com) 重点部分添加注释 import G6 from antv/g6;const { pageRank } G6.Algorithm; // 在此引入 pageRankconst container document.getElementById(containe…

无人机之报警器的作用

一、紧急救援与辅助搜救 紧急救援&#xff1a;在事故或紧急情况下&#xff0c;无人机报警器可以迅速发出警报&#xff0c;指引救援人员前往事故地点&#xff0c;提高救援效率。 辅助搜救&#xff1a;无人机搭载报警器可以辅助寻找失踪人员或其他需要搜救的场景&#xff0c;通…

MySQL数据库的介绍

目录 1.什么是MySQL数据库 2.MySQL数据库的设计 MySQL的进一步认识 MySQL的客户端 —— mysql MySQL的服务端 —— mysqld 3.MySQL数据库的架构 MySQL架构图 连接层 服务层 存储引擎层 文件系统层 4.MySQL的存储引擎 认识存储引擎 MySQL中的存储引擎 存储引擎之…

电工类 ,今日行业动态

电工类今日行业动态 一、技术发展趋势 智能化、自动化推进&#xff1a;随着人工智能、物联网等技术的不断发展&#xff0c;电工行业正逐步向智能化、自动化转型。智能电网、智能家居等领域的快速发展&#xff0c;对电工技术提出了新的要求&#xff0c;电工人员需要不断学习和…

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下&#xff1a; num_points 100 x np.random.rand(num_points) #x点位随机 y np.random.rand(num_points) #y点位随机 colors np.random.rand(num_points) #颜色随机 sizes 1000 * np.random.rand(num_points) # 大小随机 alphas np.random.ran…

网络安全评测评技术与标准

网络安全测评概况 概念 参照一定的标准规范要求&#xff0c;通过一系列技术和管理方法&#xff0c;获取评估对象网络安全状况信息&#xff0c;对其给出相应网络安全情况综合判定 测评对象&#xff1a;信息系统的组成要素或信息系统自身 CC&#xff08;Common Criteria&#…

Versioned Staged Flow-Sensitive Pointer Analysis

VSFS 1.Introduction2.Approach2.1.相关概念2.2.VSFS 3.Evaluation参考文献 1.Introduction 上一篇blog我介绍了目前flow-sensitive pointer analysis常用的SFS算法。相比IFDS-based方法&#xff0c;SFS显著通过稀疏分析提升了效率&#xff0c;但是其内部依旧有许多冗余计算&a…

12道经典性能测试人员面试题

1.性能测试包含了哪些软件测试&#xff08;至少举出3种&#xff09;&#xff1f; 参考答案&#xff1a;负载测试、压力测试、容量测试。 负载测试&#xff08;Load Testing&#xff09;&#xff1a;负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标&#xff0c…

Linux系统编程实现ls -l | wc -l指令

由于该指令是通过管道的形式实现的&#xff0c;所以我们要使用系统函数pipe。ls -l |wc -l的作用就是统计当前目录有多少文件。如果又父进程实现ls -l&#xff0c;子进程实现wc -l指令&#xff0c;代码如下&#xff1a; #include<unistd.h> #include<stdio.h> #in…

帝可得智能售货机运营管理系统

1.项目介绍 帝可得是一个基于物联网概念下的智能售货机运营管理系统 应用场景&#xff1a;智能家居、共享充电中、智能售货机 智能售货机的优势在于其自我管理能力 。 物联网技术&#xff1a;像是售货机的顺风耳和千里眼。 智能分析与推荐 人员设备绑定管理 移动支付支持…

下一代皮克斯:AI如何融合电影与游戏

故事是人类体验的核心,通过故事我们理解世界、寻找意义并与他人建立联系。技术的进步不断推动着故事叙述的形式,从迪士尼的多平面摄影机到皮克斯的3D图形技术,每一次技术革命都带来了故事叙述的新方式。 游戏:现代叙事的前沿 今天,有两个主要的趋势正在加速下一代叙事公…

球球大作战

代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdbool.h> #include<graphics.h> #include<stdlib.h> #include<conio.h> #include<time.h>//随机数库文件 #include<math.h> #include<tchar.h…

单点登录CAS

CAS&#xff08;Central Authentication Service&#xff09;是耶鲁大学发起的一个开源项目&#xff0c;旨在为Web应用系统提供一种可靠的单点登录解决方案。CAS服务器独立部署&#xff0c;作为独立的Web应用&#xff0c;负责处理用户的认证请求并颁发票据&#xff08;Ticket&a…

P0.7全倒装COB超微小间距LED显示屏厂家已量产,加速高清显示的发展

随着P0.7全倒装COB超微小间距LED显示屏技术的成功量产&#xff0c;这一里程碑式的成就不仅标志着高清显示技术迈入了全新纪元&#xff0c;更预示着未来视觉体验将迎来前所未有的变革。各大应用场景&#xff0c;如指挥中心、会议中心、大型活动直播、高端影院乃至家庭娱乐&#…

如何高效学习越南语,求方法,急!!!

高效学习越南语需要掌握基础语法和词汇&#xff0c;并通过将自己置于语言环境中来加强实际应用。与母语为越南语的人进行语言交换&#xff0c;利用语言学习应用&#xff0c;制定学习计划&#xff0c;以及进行阅读和写作练习都是提高语言能力的有效方法。同时&#xff0c;通过听…

【JavaSE基础】Java 基础知识

Java 转义字符 Java 常用的转义字符 在控制台&#xff0c;输入 tab 键&#xff0c;可以实现命令补全 转义字符含义作用\t制表符一个制表位&#xff0c;实现对齐的功能\n &#xff1a;换行符\n换行符一个换行符\r回车符一个回车键 System.out.println(“韩顺平教育\r 北京”);&…

C语言第一周课

目录 1.程序设计的基本概念是什么?C语言是什么?算法是什么? 2.开发环境 3.第一个C语言程序 4.搭建VC6编译环境 5.实际操作,完成第一个C语言程序 6.体验在线编译环境 1.程序设计的基本概念是什么?C语言是什么?算法是什么? C语言是一种较早的程序设计语言&#xff0c…