QT上位机开发(掌握一点c++基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        c++是c语言的补充和扩展,本身的语法构成也是在一直迭代中。相信很多同学上大学读书的时候,或多或少对c语言有所了解,对它的变量、指针、函数也应该不陌生。既然大家都有c语言基础的话,那么在这方面稍微拓展一下的话,就可以学会c++了。当然c++本身的内容很多,很多方面还很琐碎,但我们学习的时候还是应该把精力放在那些经常使用到的语法上面。

1、封装

        封装,简单来看就是把数据和函数放在一起。之前c语言虽然也有封装,使用的关键字是struct。但是c++的封装有所不同,它是把变量和函数放在一起的,而c多是把数据放在一起。c++的封装一般像这样,

class parent
{	int data_;
public:parent() {}~parent() {}parent(parent&) {}void set_data(int data) { data_ = data; }int get_data() { return data_; }
};

2、继承

        继承也是c++语言比较有意义的一个特征。它的意思是说,如果一个类能够继承父类,那么父类的变量和函数也可以顺势为子类所用。这一点在很多业务场景中其实真的非常实用。

class child :public parent
{
public:child() {}~child() {}child(child&) {}
};

        从上面这份代码看上去,好像child类里面什么也没有,但是正因为它继承了parent类的内容,所以parent类里面有什么,child也会有什么。

3、多态

        多态这个概念,从中文来说有点拗口。但是它本身想说明的其实就是,父类会提供一个通用接口,子类对于这个接口想怎么处理,那就是子类自己的事情。如果这么表达还是不清晰,我们换个说法。假设父类代表一个音乐文件的解析,那么子类则代表具体音乐格式的解析。比如mp3有mp3的解析方法,wma有wma的解析方法,但对于父类来说,它只有解析这么一个抽象接口。

        这里我们还是用parent类和child类来说明。大家可以观察下,我们添加了一个virtual关键字的display函数,这个函数就是虚函数。每个子类都可以根据自己的需要灵活修改display函数,但是函数名和函数入参不会改变。

class parent
{	int data_;
public:parent() {}~parent() {}parent(parent&) {}void set_data(int data) { data_ = data; }int get_data() { return data_; }virtual void display() {}
};class child :public parent
{
public:child() {}~child() {}child(child&) {}void display() {}
};

4、模板

        模板是我们另外一个经常遇到的特性。其实模板的本意,是想让程序员节省精力,避免重复编写代码的劳动。举例来说,对float数组的排序,和对double数组的排序,基本逻辑是一样的,唯一的不同仅仅是因为两者数据类型不同而已。语言设计者看到这个现象,并想出了用模板的方法来进行解决的思路。这种想法的初衷还是很好的,但是唯一让人开心不起来的,就是模板出错时,大片大片的debug log会让人觉得摸不着头脑。当前模板有函数模板和类模板两种,大家多用用就能学会的。

template <typename T>
class parent
{	T data_;
public:parent() {}~parent() {}parent(parent&) {}void set_data(T data) { data_ = data; }T get_data() { return data_; }virtual void display() {}
};template<typename T>
class child :public parent<T>
{
public:child() {}~child() {}child(child&) {}void display() {}
};template <typename T>
T find_bigger_data(T a, T b)
{return a > b ? a : b;
}

5、STL模板库

        除了上面说到的封装、继承、多态和模板之外,另外一个值得学习一下的c++内容,那就是STL库了。大家可以把它看成是通用数据结构加一点算法的小型库。这个库目前各个操作系统平台都支持,基本上是标配。对于这些标准库的使用,可以帮助我们解决不少问题、节省不少精力。

#include <vector>
void test_stl_vector()
{int i;std::vector<int> array;for (i = 0; i < 10; i++){array.push_back(i);}std::cout << array.size() << std::endl;
}

6、后续的c++学习

        为了用好qt,我们肯定需要了解c++的一些基本知识点,特别是区别于c的知识点。但是大家在学习的时候,也没必要有很大的心理负担,本着用到什么学什么的思路去学,就可以了。当然,学习的过程中千万不要沉迷于语法细节、语法糖中去,毕竟把c++、把qt用起来才是第一位的。

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

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

相关文章

CENTOS docker拉取私服镜像

概述 docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker镜像的拉取。 centos6版本太老&#xff0c;docker的使用过程中问题较多&#xff0c;centos7相对简单容易。 本文档主要介绍centos系统安装docker和拉取docker私…

一些深度学习训练过程可视化以及绘图工具

常见的可视化方法 深度学习训练过程的可视化是一个重要的环节&#xff0c;它可以帮助研究人员和工程师更好地理解和调整他们的模型。常见的可视化方法包括&#xff1a; 损失和准确率曲线&#xff1a; 这是最常见的可视化类型&#xff0c;通常在训练过程中绘制损失函数和准确率…

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…

Vue2 - v-model 简介

目录 1&#xff0c;原理1.1&#xff0c;作用于表单元素1.2&#xff0c;作用于自定义组件 2&#xff0c;编译结果展示2.2&#xff0c;表单元素2.1&#xff0c;自定义组件 1&#xff0c;原理 官网参考 v-model 是一个语法糖&#xff0c;最终会生成一个属性和一个事件。并且即可…

[ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择

文章目录 一、前言二、Amazon SNS 服务&#xff08;Amazon Simple Notification Service&#xff09;三、Amazon SQS 服务&#xff08;Amazon Simple Queue Service&#xff09;四、SNS 与 SQS 的区别&#xff08;本文重点&#xff09;4.1 基于推送和轮询区别4.2 消费者数量对应…

天擎终端安全管理系统clientinfobymid存在SQL注入漏洞

产品简介 奇安信天擎终端安全管理系统是面向政企单位推出的一体化终端安全产品解决方案。该产品集防病毒、终端安全管控、终端准入、终端审计、外设管控、EDR等功能于一体&#xff0c;兼容不同操作系统和计算平台&#xff0c;帮助客户实现平台一体化、功能一体化、数据一体化的…

一款超酷的一体化网站测试工具:Web-Check

Web-Check 是一款功能强大的一体化工具&#xff0c;用于发现网站/主机的相关信息。用于检查网页的工具&#xff0c;用于确保网页的正确性和可访问性。它可以帮助开发人员和网站管理员检测网页中的错误和问题&#xff0c;并提供修复建议。 它只需要输入一个网站就可以查看一个网…

Java——猫猫图鉴微信小程序(前后端分离版)

目录 一、开源项目 二、项目来源 三、使用框架 四、小程序功能 1、用户功能 2、管理员功能 五、使用docker快速部署 六、更新信息 审核说明 一、开源项目 猫咪信息点-ruoyi-cat: 1、一直想做点项目进行学习与练手&#xff0c;所以做了一个对自己来说可以完成的…

Spring Boot 基于Redisson实现注解式分布式锁

依赖版本 JDK 17 Spring Boot 3.2.0 Redisson 3.25.0 源码地址&#xff1a;Gitee 导入依赖 <properties><redisson.version>3.25.0</redisson.version> </properties><dependencies><dependency><groupId>org.projectlombok</…

QT/C++ 远程数据采集上位机+服务器

一、项目介绍&#xff1a; 远程数据采集与传输 课题要求:编写个基于TCP的网络数据获取与传输的应用程序; 该程序具备以下功能: 1)本地端程序够通过串口与下位机(单片机)进行通信&#xff0c;实现数据采集任务 2)本地端程序能将所获取下位机数据进行保存(如csv文本格式等); 3…

我的机器学习起步如何Getting Started

学习技巧和原则 先通过经典书籍进行科普知名机器学习网站根据书籍或网站的目录&#xff0c;先泛读、再选择有兴趣的部分重点精读、后至于反复读知行合一 起步Getting Started 周志华版《机器学习》&#xff0c;又名西瓜书 可以作为科普书籍&#xff0c;需要主动略过对于理论…

GPT系列概述

OPENAI做的东西 Openai老窝在爱荷华州&#xff0c;微软投资的数据中心 万物皆可GPT下咱们要失业了&#xff1f; 但是世界不仅仅是GPT GPT其实也只是冰山一角&#xff0c;2022年每4天就有一个大型模型问世 GPT历史时刻 GPT-1 带回到2018年的NLP 所有下游任务都需要微调&#x…