自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 QThread创建多线程之moveToThread函数

使用 MoveToThread 方法创建多线程

2022-07-02 17:43:23 910 1

原创 QThread创建多线程之子类化QThread方法

使用 QThread 类创建多线程方法之一:使用子类化的QThread

2022-07-02 15:36:20 1223

原创 创建Qt应用程序

创建Qt应用程序流程梳理

2022-06-28 22:01:20 853

原创 Qt插件创建

介绍了Qt插件创建的流程

2022-06-28 20:36:35 597

原创 OpenCV中 Mat 的使用方法

Mat 是 OpenCV 中的数据类型,储存矩阵形式的数据,构造 Mat 类型的方法有很多,都是通过 Mat 这个构造函数进行实现(Mat 也是构造 Mat 数据类型的函数)。本文主要介绍 Mat 的构造方法和 Mat 类的访问以及相关的数据类型。文章目录1 传统的函数构造1.1 关于 CV_< bits >< type >C(< channels >) 的补充2 使用已知的向量构造 Mat 类型3 使用 create 来创建或更改大小和类型4 创建 ROI(感兴趣

2022-04-03 21:26:10 4519

原创 c++从零开始---函数模板

1、函数模板的概念函数模板是通用的函数描述,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。模板格式:template <typename AnyType>void Swap(AnyType &a, AnyType &b){ AnyType temp; temp = a; a = b; b = temp;}该程序的第一行指出,要建立一个模板,并将类型命名为 AnyType。关键字 templa

2021-12-04 15:29:39 98

原创 c++从零开始---函数重载

1、函数重载的概念使用函数重载创建函数使得用户能够使用多个同名的函数,他们完成不同的工作,使用不同的参数列表,但是函数名相同。重载函数就像是有多种含义的动词。重载函数的关键是函数的参数列表—也称为函数特征标。如果两个函数的参数的数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是无关紧要的。例如,可以定义一组原型如下的 print() 函数:void print(const char *str, int width); // #1void print(double d, int

2021-12-04 10:23:15 527

原创 c++从零开始---引用变量

c++ 新增了一种复合类型—引用变量。引用是已定义的变量的别名。例如,如果将 twain 作为 clement 的变量的引用,则可以交替使用 twain 和 clement 来表示该变量。引用变量通常用作函数的形参。通过将引用变量用作参数,函数将使用原始数据而不是其副本。1、创建引用变量c++ 中,使用类型标识符 & 来声明引用。注意:& 表示类型标识符还是地址运算符应该根据上下文来确定。例如,要将 rodents 作为 rants 变量的别名:int rats;int &am.

2021-12-03 20:01:18 518

原创 c++从零开始---c++内联函数

常规函数和内联函数的区别不在于编写方式,而在于 c++ 编译器如何将它们组合到程序中。1、内联函数的执行逻辑编译过程的最终产品是可执行程序—由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令。有时将跳过一些指令,向前或向后跳到特定地址(比如循环或者分支语句)。常规函数调用也使程序跳到另一个地址(函数的地址),并在函数结束时返回。执行函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈跳到

2021-12-03 18:14:00 406

原创 c++从零开始---函数指针

与数据项相似,函数也有地址。函数的地址是存储其机器语言代码的内存的开始地址。通常编写将另一个函数的地址作为参数的函数。这样第一个函数将能够找到第二个函数,并运行它。与直接调用另一个函数相比,这种方法允许在不同的时间传递不同函数的地址,意味着可以在不同的时间使用不同的函数。1、函数指针基础知识假设要设计一个名为 estimate() 的函数,用来估算指定行数的代码所需的时间,并且希望不同的程序员都将使用该函数。对于所有的用户来说,estimate() 中一部分代码都是相同的,但该函数允许每个程序员提.

2021-12-03 16:12:34 467

原创 c++从零开始---递归

函数可以调用自身,这种功能称为递归。递归可以有只包含一个递归的递归,也可以包含多个递归。也就是在运行一次函数时,调用一次自身或是多次。1、包含一个递归调用的递归通常的格式是将递归调用放在 if 语句中,这样递归才可以判断是否结束递归循环调用:void recurs(arguments){ statements1 if (test) recurs(arguments) statements2}test 最终为 FALSE,调用链断开。在以上程序格式中,递归调用将导致执行 n 次 s

2021-12-03 10:04:49 121

原创 c++从零开始---函数和结构

在涉及函数时,结构变量的行为更接近于基本的单值变量。也就是说,与数组不同,结构将其数据结合成单个实体或数据对象,该实体被视为一个整体。比如,可以将结构赋给另一个结构,同样,可以按值传递结构,就像普通变量那样。在这种情况下函数使用结构的副本。使用结构编程时,最直接的方式是像处理基本类型那样来处理结构,即直接传递和返回结构。此外,当结构非常大时,也可以传递结构的地址。1、传递和返回结构使用示例如下:#include <iostream>struct test // 创建结构类型 test

2021-12-03 09:27:08 128

原创 c++从零开始---函数和数组

1、函数如何使用指针来处理数组如果一个形参需要命名为数组,应该如何进行。例如:int sum_arr(int arr[], int n) 一般可以理解为:方括号指出 arr 是一个数组,而方括号为空则表明,可以将任何长度的数组传递给该函数。实际上,前面提到过,数组名很多时候代表的是一个指针,该指针指向数组的第一个元素的地址!比如数组名 cookies,有以下表达式:cookies == &cookies[0]其中,cookies 是数组名,而根据 c++ 规则,cookies 是其第

2021-12-02 11:24:04 356

原创 c++从零开始---函数及其参数

1、函数构成在创建函数时,必须要完成如下工作:提供函数定义;提供函数原型;调用函数。1.1 定义函数函数有两大类:没有返回值的函数和有返回值的函数。1.1.1 没有返回值的函数的通用格式如下:void functionName(parameterList){ statement(s) return;}通常情况下,使用 void 函数执行某种操作,例如:void cheers(int n){ for (int n = 0;i < n; i++) std::cou

2021-12-02 08:48:09 185

原创 c++从零开始---switch 分支语句

1、switch 结构c++ 的 switch 语句能够更容易地从大型列表中进行选择。switch 语句的通用格式:switch (integer-expression){ case label11: statement(s) case label12: statement(s) ... default: statement(s)}c++ 的 switch 语句就像指路牌,告诉计算机接下来应执行哪行代码,执行到 switch 语句时,程序将跳到使用 integer-expression

2021-11-20 14:57:42 1168

原创 c++从零开始---if 分支语句和逻辑表达式

1、分支语句 if 和 else if设计产能程序的一个关键是使程序具有决策能力。当 c++ 程序必须决定是否执行某个操作时,通常使用 if 语句来实现选择。if 有两种格式: if 和 if else。if 语句组成(一层条件):if (test-condition) statement如果 test-condition 为 TRUE,则程序将执行 statement,后者既可以是一条语句,也可以是语句块。如果测试程序为 FALSE,则程序将跳过语句。if else 语句构成(两层条件

2021-11-20 11:03:14 1312

原创 c++从零开始---while 循环和 do while 循环

1、while 循环结构while循环是没有初始化和更新部分的 for 循环,它只有测试条件和循环体:while (test - condition) body首先,程序计算圆括号内的测试条件表达式,如果该表达时为 TRUE,则执行循环体内的语句。循环体也由一条语句或两个花括号定义的语句块组成。执行完循环体之后,程序返回测试条件,对它进行重新评估。如果该条件非零,再次执行循环体,直到测试条件为 FALSE 为止。while 循环也和 for 循环一样,是一种入口条件循环,因此如果测试条件一开始便为

2021-11-18 17:19:24 722

原创 c++从零开始---for 循环相关

1、递增(++)和递减(–)运算符递增和递减运算符都是在自身的基础上进行加 1 或者 减 1。根据其在数值前面还是后面,运算结果略有不同。#include <iostream>int main(){ using namespace std; int a = 20; int b = 20; cout << "a = " << a << ", b = " << b << endl; cout << "a++

2021-11-18 15:30:47 495

原创 c++从零开始---循环之 for 循环

先来看一段 for 循环程序:#include <iostream>int main(){ using namespace std; int i; for (i = 0; i < 5; i++) { cout << "C++ knows loops.\n"; } cout << "C++ knows to stop.\n"; return 0;}程序输出:C++ knows loops.C++ knows loops.C+

2021-11-18 10:18:36 824

原创 c++从零开始---复合类型之指针、数组和字符串

1、指针算术指针和数组基本等价的原因在于指针算术和 c++ 内部处理数据的方式。将整数变量加 1 后,其值将增加 1;但将指针变量加 1 后,增加的量等于它指向的类型的字节。 例如,将 double 类型的指针加 1,如果系统对 double 使用 8 个字节存储,则数值将增加 8;将指向 short 的指针加 1 后,如果系统对 short 使用2 个字节存储,则指针值将增加 2;示例程序如下:double a3[3] {2.3, 3.3, 2.1};double *pr = a3;co

2021-11-16 21:32:34 402

原创 c++从零开始---复合类型之指针 new 运算符

指针真正地用武之地在于,在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。c++ 提供了一种方法—new 运算符。1、如何使用 new 运算符首先,程序员需要告诉 new,需要为哪种数据类型分配内存,然后,new 将找到一块长度正确的内存块,并返回该内存块的地址。之后程序员再将改地址赋给一个指针。示例如下:int *pn = new int;new int 告诉程序,需要存储 int 的内存,new 运算符根据类型来确定多少内存的字节。然后,它找到这样的内存并返回地址。.

2021-11-16 17:06:16 4509 2

原创 c++从零开始---复合类型之指针概念

指针是一个变量,其存储的是值得地址,而不是值本身。本节使用的程序段#include <iostream>int main(){ using namespace std; int a = 1; // 地址运算符 & 的应用 cout << "a value = " << a << endl; cout << "a address = " << &a << endl; // 地址运算.

2021-11-16 10:52:31 266

原创 c++从零开始---复合类型之枚举类

c++ 的 enum 工具提供了另一种创建符号常量的方式,这种方式可以代替 const。并且还允许定义新类型,但必须按严格的限制进行。枚举的使用方法与注意事项1、使用 enum 的句法与使用结构相似,例如下面的语句:enum spectrum {red, orange, green, blue, violet, indigo, ultraviolet};这条语句完成两项工作。让 spectrum 称为新类型的名称;spectrum 被称为枚举(enumeration)。将 red、ora.

2021-11-15 20:54:15 360

原创 c++从零开始---复合类型之共用体

共用体(union)是一种数据格式,它能够存储不同的数据类型,但在一定的时间段只能存储其中的一种类型。即共用体可以存储 int 、long 或 double。但是不能同时存储不同类型。共用体的结构声明语句如下:union one_to_three // 声明语句与结构类似{ int int_val; long long_val; double double_val;};one_to_three pay;pay.int_val = 15; // pay.int_val 将空间占用.

2021-11-15 19:38:25 83

原创 c++从零开始---复合类型之结构

假设要存储有关篮球运送员的信息,则可能需要存储他的姓名、工资、身高、体重、平均得分、命中率、助攻次数等。希望有一种数据格式能将所有这些信息储存了一个单元中。数组能存储多个元素,但是元素的类型必须相同,因此c++ 提供了结构这种数据类型满足这样的要求。结构是用户定义的类型,而结构声明定义了这种类型的数据属性。定义了类型后,便可以创建这种类型的变量。因此创建结构包括两步。1、定义结构描述,描述并标记能够存储在结构中的各种数据类型;2、按照描述创建结构变量。1、结构的构成以一个运动员的信息为例创建一个结.

2021-11-15 19:11:48 135

原创 c++从零开始---复合类型之string类

可以使用 string 类型的变量而不是字符数组来储存字符串,string 类使用起来更简单,同时提供了将字符串作为一种数据类型的表示方法。要使用 string 类,必须在程序中包含头文件 string。string 类与字符数组的异同点相同点:1、可以使用C-风格字符串来初始化 string 对象:string str{ 'a','b','c' };;2、可以使用 cin 来将键盘输入存储到 string 对象中;3、可以使用 cout 来显示 string 对象;4、可以使用数组表示法.

2021-11-15 16:42:50 147 1

原创 c++从零开始---复合类型之C-风格字符串

字符串是存储在内存的连续字节中的一系列字符。c++ 处理字符串的方式有两种,一种是来自 c 语言,被称为 C-风格字符串,另一种是基于 string 类库的方法。1、字符串的构成储存在连续字节中的一些列字符意味着可以将字符串储存在 char 数组中,其中每个字符都位于自己的数组元素中。即每一个元素代表一个字符。比如:“i like you, how about you?”。这样的一个字符串里面有字母,标点符号和空格。而按照 ASCII 码将每一个符号进行编码得到其对应的数字,再将其储存在数组中。.

2021-11-15 15:24:18 174

原创 c++从零开始---复合类型之数组

数组能够储存多个同类型的值。比如可以储存 12 个 short 值用于表示每个月的天数,或者 7 个 float 值表示一周内每天的花销。每个值都储存在一个独立的数组元素中,计算机在内存中依次储存数组的各个元素。1、创建数组使用声明语句创建数组。通用格式如下:typeName arrayName[arraySize];数据类型 数组名 【 数组元素的个数 】代码示例如下:int day_numbers_everymonth[12]float pay[7]注意:arraySize 所.

2021-11-15 10:45:45 594

原创 c++从零开始---数据类型之浮点数

1、浮点数的概念浮点数可以表示诸如 2.5、3.1415和100033.23 这样的数字,即带小数部分的数字。计算机将这样的值分成两部分储存。一部分表示值,另一部分用于对值进行放大和缩小。比如 3.1415 和 3141.5 除了小数点的位置不同外,其它都是相同的。可以将第一个数表示为0.31415(基准值)和 10 (缩放因子),而将第二个数表示为0.31415 (基准值相同)和 10000 (缩放因子更大)。缩放因子的作用是移动小数点的位置,术语浮点因此得名。浮点数可以表示非常大和非常小的数值。

2021-11-04 12:06:46 6004

原创 c++从零开始---数据类型之整型2

上接数据类型之整型14、选择整形类型的原则如果没有足够的理由来选择其它类型,应该使用 int ;如果变量表示的值不可能为负数,那么用无符号类型,这样可以表示更大的数;由于 short 比 int 小,使用 short 可以节省内存。通常仅当有大型整数数组时,才有必要使用 short ;如果只需要一个字节,可使用 char (字符整型)5、整型字面值c++ 能够以三种不同的计数方式来书写整数:基数为 10(十进制)、基数为8(八进制)、基数为16(十六进制)。第一位为1 ~ 9,则为十

2021-11-03 11:17:18 156

原创 c++从零开始---数据类型之整型1

内置的 c++ 类型分两组:基本类型和复合类型。基本类型包括整型和浮点型。在基本类型的基础上创建的为复合类型,包括数组、字符串、指针和结构。本节主要介绍基本类型中的整形。整数就是没有小数部分的数字,比如2、98、-1、0。c++为用户提供好几种整型,不同的 c++ 整型提供不同的内存量来储存整数,使用的内存量越大,可以表示的整数范围也越大。术语宽度用于描述储存整数时使用的内存量,使用的内存越多则越宽。符号类型可表示正值和负值,无符号类型不能表示负值。c++ 的基本整型包括(按宽度递增的顺序排列)cha

2021-11-03 09:39:04 1260

原创 c++从零开始---语句和函数

1、c++语句本节参照程序段:#include <iostream>int main(){ using namespace std; // 使用名称空间 std, int a, b; // 声明语句,声明 a, b 两个变量,给他们储存空间的名字为 a, b,并表示他们能够储存整形(int)数据。 a = 5; // 赋值语句,“=” 为赋值运算符,表示将右边的数据或者值给左边,此处即为将 5 赋值给储

2021-11-02 12:41:25 565

原创 c++从零开始---c++程序构成

c++从零开始—c++程序构成

2021-10-31 16:48:01 172

原创 c++从零开始---软件安装和使用

c++从零开始—软件安装和使用1、软件安装c++编程可以使用的软件有很多,比如vc、devc++和visual studio,网盘提取码:7777。按照所下载文件里面的安装步骤进行安装即可。我使用的是visual studio2019版本。如果已经安装其它软件或者其它版本的vs,可以忽略本节内容。2、软件使用vs通常需要先新建一个项目,再在项目里面新建一个文件,类似于新建一个文件夹,再在该文件夹里面建一个文件以方便管理。如下:创建空项目选择 源文件-添加-新建项

2021-10-30 11:59:38 1009

原创 c++从零开始---文章导读

c++从零开始—文章导读1、写本系列博客的目的在读学生,为了巩固所学知识,用CSDN作为学习见证,督促自己,坚持学习。之前学习过python语言,学习过程中一般都是按照书上的程序打一遍,然后加一些自己的理解,但是总是感觉这样的学习笔记过于粗俗,不能真正地做到加深印象,想着可以尝试写博客,以让其他初学者也能轻松看懂的方式来做笔记,一方面做一个知识输出,一方面加深自己的印象。c++,我来了!2、以怎样的方式进行先看视频(B站up主黑马程序员),然后和C++premier 一起学习,两者交叉学习

2021-10-29 16:49:23 1113

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除