C++学习笔记
文章平均质量分 62
C++
Harmony_Launch
这个作者很懒,什么都没留下…
展开
-
【C++学习笔记(五十四)】之Qt中的对话框QDialog介绍
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一.对话框QDialog 之前有说到,QDialog类负责对话框部件,继承于QWidget类。对话框一般用于实现用户交互,弹出一个顶层窗口。很多不适合放在主窗口的功能都可以放在对话框中。 QDialog类及其子类对于parent指针有特别的设置:如果parent为NULL,那么该对话框独立作为一个顶层窗口;若paren原创 2020-07-26 19:57:30 · 1345 阅读 · 1 评论 -
【C++学习笔记(五十三)】之Qt中QMainWindow添加各种菜单栏工具栏
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. QMainWindow 之前有说到,QMainWindow类主要承担的是菜单栏,工具栏,状态栏,铆接部件,核心部件等窗口部件,如下图所示:二. 菜单栏 一个主窗口最多只有一个菜单栏,位于主窗口的顶部,标题下面。(一)创建菜单栏 通过QMainWi原创 2020-07-26 12:54:59 · 3602 阅读 · 1 评论 -
【C++学习笔记(五十二)】之Lambda表达式详解
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一.Lambda表达式的构成 C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。 Lambda表达式的构成:[函数对象参数](操作符重载函数参数)mutable ->返回值{函数体}二.函数对象参数 【】函数对象原创 2020-07-25 22:55:52 · 149 阅读 · 0 评论 -
【C++学习笔记(五十一)】之Qt中的信号和槽机制
一.信号和槽机制 信号和槽机制分为信号和槽函数,用于处理事件。当某个事件发生时,比如说某个按钮被点击后,它就会发出一个信号(signal),如果有对象对这个信号感兴趣,那么它就会使用连接(connect)函数,将该信号与自己的一个槽函数(slot)连接起来,槽函数被调用。槽函数负责点击按钮后的处理实现。二,系统自带的信号和槽函数(一)connect函数 connect函数连接信号原创 2020-07-25 22:50:34 · 669 阅读 · 0 评论 -
【C++学习笔记(五十)】之Qt的对象树内存回收机制
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. QObject是以对象树的形式组建起来的 创建一个QObject对象时,构造函数会接受一个Parent对象指针,即父对象指针。因此,该对象在创建的时候,父对象就知道了有一个子对象生成了,并将该子对象添加到起父对象的children()列表中。 当父对象析构时,这个列表中的所有对象也会被析构。二.QWidg原创 2020-07-25 17:16:18 · 399 阅读 · 0 评论 -
【C++学习笔记(四十九)】之Qt添加按钮
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. 按钮(一)QPushButton 查询帮助文档可以看到 QPushButton这个类的相关信息如下: 1. Header:代表需要添加的头文件 2. qmake代表所属的模块,在.pro工程配置文件中添加,widgets是默认添加的。原创 2020-07-25 16:20:07 · 4243 阅读 · 0 评论 -
【C++学习笔记(四十八)】之Qt项目初始化的说明与注意事项
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. 创建项目 注意事项 注意:路径名不支持中文和空格 QWidget是QMainWindow和QDialog的基类。 QWidget只是一个窗口,没有具体的功能 QMainWindow实现菜单栏,状原创 2020-07-25 14:58:48 · 1215 阅读 · 0 评论 -
【C++学习笔记(四十七)】之贪吃蛇项目(附源码)
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:贪吃蛇项目源码分享公号回复 “贪吃蛇”,获取源码!!!原创 2020-07-24 19:47:33 · 214 阅读 · 0 评论 -
【C++学习笔记(四十六)】之演讲比赛项目实例(附源码)
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. 比赛规则: 某市举行一场演讲比赛( speech_contest ),共有24个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。 比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛; 第一轮分为4个小组,每组6个人。比如编号为: 100-12原创 2020-07-24 09:37:42 · 318 阅读 · 0 评论 -
【C++学习笔记(四十五)】之STL中常用算数与集合算法
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. accumulate算法 计算容器元素累计总和@param beg 容器开始迭代器@param end 容器结束迭代器@param value起始值二. fill算法 向容器中填充相同的元素 @param beg 容器开始迭代器@param end 容器结束迭代器@param value原创 2020-07-23 17:45:45 · 92 阅读 · 0 评论 -
【C++学习笔记(四十四)】之STL中的拷贝与替换算法
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. Copy算法 将容器中指定范围的元素拷贝到另一容器中,另一容器需要手动分配内存。@param beg 容器开始迭代器@param end 容器结束迭代器@param dest 目标起始迭代器 二. Replace算法 将容器中指定范围的旧元素改为新元素@param beg 容器开始迭代器@pa原创 2020-07-23 17:21:22 · 124 阅读 · 0 评论 -
【C++学习笔记(四十三)】之STL中的排序算法
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. merge算法 将两个容器中的元素合并存储到另一个容器中。 原始的两个容器必须是有序的,且顺序相同。@param beg1 容器1开始迭代器@param end1 容器1结束迭代器@param beg2 容器2开始迭代器@param end2 容器2结束迭代器@param dest 目标容器开始迭代原创 2020-07-23 17:09:23 · 83 阅读 · 0 评论 -
【C++学习笔记(四十二)】之STL中的查找算法
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一 . find算法(一)查找基本数据类型元素@param beg 容器开始迭代器@param end 容器结束迭代器@param value 查找的元素@return 返回查找元素的位置void test(){ vector<int> v; for(int i = 0; i < 10; ++i) { v.push_back(i); } vector<int>::itera原创 2020-07-23 16:51:27 · 158 阅读 · 0 评论 -
【C++学习笔记(四十一)】之STL中的遍历算法
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. for_each 算法(一) 用途: 遍历算法 遍历容器元素,参数如下:@param beg 开始迭代器@param end 结束迭代器@param _callback 函数回调或者函数对象@return 函数对象(二)使用函数,仿函数都可以作为遍历的规则void myPrint(int v){ cout <<v << e原创 2020-07-23 15:35:38 · 204 阅读 · 0 评论 -
【C++学习笔记(四十)】之STL中适配器的介绍
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. 适配器 我们都知道,笔记本电脑的转接头适配器能够扩展缺少的接口,STL中的适配器也是一样的效果,它能够将某些类型扩展接口,适配到其他类型中。即扩展参数的个数,如将一元函数扩展为二元函数… 需要引入头文件#include<functional>二.仿函数 适配器扩展参数到二元(一)应用场景:原创 2020-07-23 13:23:49 · 225 阅读 · 0 评论 -
【C++学习笔记(三十九)】之内建函数的使用
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一.内建函数 在STL中内建了一些函数对象(仿函数),这些函数对象可以直接创建并使用。分为: 算术类函数对象 关系运算类函数对象 逻辑运算类函数对象。二.调用方法:引入头文件#include原创 2020-07-23 10:04:37 · 251 阅读 · 0 评论 -
【C++学习笔记(三十八)】之谓词的使用
一. 谓词 谓词是指普通函数或者重载的operator()返回值时bool类型的函数对象(仿函数)。 如果operator接受一个参数,那么称为一元谓词;如果接受两个参数,那么称为二元谓词。 谓词的主要作用是一个判断语句,用来作为排序的判断。二. 谓词的使用(一)一元谓词的使用,判断查找class GreaterThan原创 2020-07-23 09:34:14 · 1093 阅读 · 1 评论 -
【C++学习笔记(三十七)】之仿函数(函数对象)
一.仿函数(函数对象) 重载了函数调用操作符“()“的类,其对象称为函数对象,因为该类能够像函数一样调用,因此也叫仿函数。二.分类: 1. 一元仿函数 重载operator()函数中有一个参数 2. 二元仿函数 重载operator()函数中有两个参数三.仿函数调用方式: &nbs原创 2020-07-23 09:07:20 · 237 阅读 · 0 评论 -
【C++学习笔记(三十六)】之map容器详细介绍
一. map容器 map容器是关联型容器,键值对应着实值,所有元素根据键值自动排序。 Map中的所有元素都是pair对组,pair的第一个元素为键值,第二个元素为实值,map不允许有相同的键值,但允许有相同的实值。 与set容器一样,不允许通过迭代器修改map的键值,因为键值与map的排列有关,如果修改键值,那么map的结构会被破转载 2020-07-22 16:56:36 · 949 阅读 · 0 评论 -
【C++学习笔记(三十五)】之set容器详细介绍
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一.set容器 之间已经讲过,set容器与map容器都是关联型容器,set容器不像map容器那样,有键值和对应的实值,set容器的元素的键值就是实值。因此set容器是不允许有相同的键值的。 由于set容器的键值就是对应的实值,且关联型容器在数据插入时已经将键值和实值绑定了,因此,不能随意更改set的元素值,修改se原创 2020-07-22 15:54:29 · 968 阅读 · 0 评论 -
【C++学习笔记(三十四)】之list链表容器
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一、list 链表容器 链表是一种物理存储单元上不连续的存储结构,它是通过指针链接起来的。一个结点包括两个部分,一部分是存储数据的,一部分是存储下一个结点地址的指针。 list链表容器扩充空间是需要多少给多少,插入一个就多链接一个结点,删除一个就释放一个结点。 &nb原创 2020-07-22 12:07:38 · 275 阅读 · 0 评论 -
【C++学习笔记(三十三)】之queue队列容器
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一. queue容器 queue队列容器是双口的数据结构,特点是先进先出,即先存进去的数据先取出。存数据的一端叫做队尾,取数据的一端叫做队头。就像排队一样,先来排队的人一定是先出去的。 与stack栈容器一样,queue队列容器也是没有迭代器的,没有遍历功能。 &nb原创 2020-07-22 10:18:17 · 284 阅读 · 0 评论 -
【C++学习笔记(三十二)】之stack栈容器
本文章由公号【开发小鸽】发布!欢迎关注!!!老规矩–妹妹镇楼:一.Stack栈容器 栈容器是单口的数据结构,特点是先进后出。数据只能从栈顶进入,也只能从栈顶取出,除此以外,没有其他方法可以存取栈容器的数据。 因此,栈容器是没有遍历操作的,它只能从栈顶存数据,取数据,且只能在取出数据的情况下获取该数据;没有像遍历那样,能够在不取出数据的情况下获取容器中的任意数据。原创 2020-07-22 09:57:13 · 207 阅读 · 0 评论 -
【C++学习笔记(三十一)】之deque容器详细介绍
本文章由公号【开发小鸽】发布!欢迎关注!!! 老规矩-妹妹镇楼一. deque容器的概念 之前我们介绍了vector容器的概念,vector容器相当于数组原创 2020-07-21 22:38:53 · 225 阅读 · 0 评论 -
【C++学习笔记(三十)】之vector容器的详细介绍
一.vector容器介绍 Vector容器,说白了也是数组,但是vector的空间运用十分灵活,不像 array十分死板。Vector是动态空间分配,随着元素的加入,它的内部机制会自动扩充空间。 同时,vector的空间扩充并不是要多少扩充多少,而是预先多分配一些空间,以供之后的需求。  原创 2020-07-21 20:28:16 · 700 阅读 · 0 评论 -
【C++学习笔记(二十八)】之STL容器,算法,迭代器介绍与使用
一.容器的分类 STL容器将运用的最广泛的数据结构实现出来。常用的数据结构:数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map)。 根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。(一) 序列式容器 序列式容器强调值的排序,序列式容器中的原创 2020-07-21 15:35:16 · 172 阅读 · 0 评论 -
【C++学习笔记(二十七)】之STL的介绍
一.创建STL的意图: 为了提升复用性,减少重复的劳动。建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性。二.STL基本概念 STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在c++中,但是在引入 c++之前该技术已经存在很长时间了。原创 2020-07-21 14:23:20 · 120 阅读 · 0 评论 -
【C++学习笔记(二十六)】之输入与输出的详细介绍
一. 输入/输出 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。二. C++的输入输出:(一)标准I/O: 对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出(二)文件I/O: 以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入原创 2020-07-21 10:29:53 · 1888 阅读 · 0 评论 -
【C++学习笔记(二十五)】之异常的介绍
一. 异常的基本思想: 让一个函数在发现了自己无法处理的错误时抛出一个异常,然后它的(直接或者间接)调用者能够处理这个问题。 将问题检测和问题处理相分离。 在异常处理过程中,由问题检测代码可以抛出一个对象给问题处理代码,通过这个对象的类型和内容,实际上完成了两个部分的通信,通信的内容是“出现了什么错误”。二. 异常的注意事项原创 2020-07-20 19:48:41 · 156 阅读 · 0 评论 -
【C++学习笔记(二十四)】之类型转换
一. 类型转换 类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。 转换会带来问题,比如在转换指针时,我们很可能将其转换成一个比它更大的类型,但这可能会破坏其他的数据。二. 静态转换(static_cast)1. 用于基本数据类型之间的转换。 &nbs原创 2020-07-19 11:28:13 · 193 阅读 · 0 评论 -
【C++学习笔记(二十三)】之类模板的相关问题
一. 类模板写法:template<class NameType, class AgeType>class Person{public: Person(NameType name, AgeType age) { this-> m_Name = name; this->m_Age = age; } NameType m_Name; AgeType m_Age;}类模板不支持自动类型推导,需要显式指定类型:Person<string,int&g原创 2020-07-19 10:04:34 · 437 阅读 · 0 评论 -
【C++学习笔记(二十二)】之函数模板的理解
一.模板 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。 凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。原创 2020-07-18 16:46:47 · 170 阅读 · 0 评论 -
【C++学习笔记(二十一)】之基类,子类的类型转换
一. 普通基类,子类的转换 子类是由继承于基类,通常子类的内容要比基类多一些,因此子类开辟的内存要比基类大一些。(一) 基类 -> 子类(向下类型转换) 当我们要把基类强转为子类时,由于子类的内存空间一般大一些,那么通过强转,当指针在基类的空间中移动时,如果超过了基类的空间大小,那么就有可能出现错误。(二)子类 -> 基类(向上类型转换) &原创 2020-07-18 10:39:20 · 2073 阅读 · 0 评论 -
【C++学习笔记(二十)】之虚析构函数与纯虚析构函数
一. 虚析构函数 子类继承了父类,但是普通析构函数是不会调用子类的析构的,所以可能会导致内存释放地不干净。我们需要使用虚析构函数来解决。 写法: Virtual ~Animal(){} 虚析构函数是为了解决基类的原创 2020-07-18 10:12:21 · 712 阅读 · 0 评论 -
【C++学习笔记(十九)】之抽象基类和纯虚函数
一. 纯虚函数 所谓的纯虚函数与我们之间学习的虚函数的区别在于: 虚函数: virtual void speak() {} 纯虚函数: virtual void speak() = 0; &nbs原创 2020-07-17 13:33:59 · 346 阅读 · 0 评论 -
【C++学习笔记(十八)】之用多态的思想实现计算器
一. 多态的开发优缺点 开发思想:开闭原则,对拓展开放,对修改关闭。 多态优点:利于后期拓展,结构性好,可读性强。 多态缺点:效率偏低,结构中增加了指针,复杂了一点。 如果是用之前的定义一个类,在类中定义各种计算函数,那么在需要拓展时,就得修改类中的某些函数,以达到拓展的原创 2020-07-17 10:11:39 · 385 阅读 · 0 评论 -
【C++学习笔记(十七)】之多态的理解
一. 多态 多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。 多态性改善了代码的可读性和组织性,同时也使创建的程序具有可扩展性,项目不仅在最初创建时期可以扩展,而且当项目在需要有新的功能时也能扩展。二. 多态的类型 C++支持静态多态(编译时多态)和动态多态(运行时多态)。 &n原创 2020-07-17 10:05:26 · 207 阅读 · 0 评论 -
【C++学习笔记(十六)】之继承的注意事项
一. 继承 C++的重要特征就是代码重用,通过继承机制可以利用已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。二 .继承方式 public公有继承 protected保护继承 private私有继承 &nb原创 2020-07-16 21:08:58 · 455 阅读 · 0 评论 -
【C++学习笔记(十五)】之重载运算符
一. 运算符重载(一)定义: 对已有的运算符进行重新的定义,以适应不同的数据类型。其实还是一个函数,只不过函数名改为了operator加上要重载的运算符。(二)参数: 运算符重载函数的参数个数取决于: 1. 运算符是一元运算符还是二元运算符  原创 2020-07-15 10:38:00 · 454 阅读 · 0 评论 -
【C++学习笔记(十四)】之常函数与常对象
一. 常函数 我们都知道this指针是指向类对象的, 且这个地址是一直不变的,即const性质的。设置一个类Person,可以将它记为 Person * const this; 字面意思就是this这个指针的值是不变的,即所指向的类对象是不变的。 那么如果要让指针指向的类对象中的值无法修改时,即 Const Person* const this;要怎么做呢?原创 2020-07-12 12:35:28 · 387 阅读 · 0 评论