- 博客(24)
- 收藏
- 关注
原创 linuxC应用
文件描述符一个进程打开一个文件,系统会给进程返回一个文件描述符;有进程打开文件描述符是有限的,可以使用 “ulimit -n”命令查看一个进程可以打开的最大文件数量。创建出一个进程,系统会默认存在三个文件描述符,0 标准输出, 1 标准输入,2标准错误输出。打开文件有两个系统调用int open(const char *path, int flags); //打开一个文件,int open(const char *path, int flags, mode_t mode); // 打开一个文件,如
2022-04-25 09:22:08
224
转载 c++ 概念解析
new, delete, malloc, free 之间的关系malloc 和 free 是 c/c++ 标准库函数,new 和 delete 是 c++的运算符。运算符 :编译器能够识别并且对运算符语句进行编译。malloc 和 free 只是动态申请内存和释放内存。new 和 delete 是经过c++编译器解析为:动态申请内存,转换指针类型,调用对象构造函数 (new的解析) 和 调用对象析构函数,释放内存(delete 的解析)。new, delete, new[], delete[
2022-03-01 14:33:01
241
原创 mysql笔记
数据库登录mysql -uroot -p123456 // root 为用户名, 123456为用户密码数据库退出exit查询数据库服务器中的数据库show databases;在数据库服务器中创建数据库create database test; // test 为创建的数据库名称选中相应的数据库use databasename; // databasename 则是数据库名显示数据库中的数据表show tables;创建一个数据表create table pet
2022-02-25 16:39:48
385
原创 堆 和 栈
堆和栈属于内存空间的一段区域。一个程序在内存上由 .text (代码段),.data(数据段), .bss(未初始化数据段).堆(heap) :用于动态内存分配。栈(stack): 由编译器自动释放,存放函数的参数值,局部变量等。...
2022-02-15 13:55:48
201
原创 Qt容器类
Qt 容器类Qt容器中的数据必须是可以赋值的数据类型,其意思为 该数据类型必须提供 默认的构造函数, 复制构造函数 和 赋值操作运算符。 Qt的QObject 及其子类 是不能存储在容器中,但是我们可以 存储 指向该容器的指针。注意: 容器存放对象是拷贝一份对象值,当我们在使用容器存储 QObject 类 及其子类时,存储的是指向该对象的指针,所以要考虑该对象是否结束声明周期的问题,最后是在堆栈中创建该对象。Amort.O(1) 表示 仅一次操作时间复杂度可能为 O(n), 但是多次操作时间复杂度
2022-02-13 15:49:32
617
原创 C++基础
有无符号类行转换在计算过程中,即有有符号类型对象 和 无符号类型对象,那么有符号类型对象会转为无符号类型对象。顶层const在指针中,指针本身是一个对象,但是指针也指向一个对象,const 修饰指针就有着两种意思。当const修饰指针对象时称为顶层const ,修饰指针指向的对象时称底层const。const int *p = nullptr; //修饰指针指向的对象,底层constint const *p = nullptr; //修饰指针指向的对象,底层constint * const p
2022-02-09 21:03:29
627
原创 C++部分知识总结
endl 操纵符的作用:将内存中缓存的数据刷新到设备中,调式信息时,最好都要 使用 endl 作为调试结束符。“引用”:将左值和右值绑定在一起,即左值是右值的别名,引用必须初始化。引用没有赋值这一说法。引用只能作用在对象上。不能作用在 字面值 或是表达式的结果上。指针:在c++中 最好 是用 nullptr 表示空指针。指针也是一个对象,所以指针也可以引用...
2022-02-09 21:02:24
325
原创 虚指针(vptr) 和 虚表(vtbl)
虚指针在类中,一个对象的大小取决于类内的数据成员的大小之和。但是如果类存在着虚函数,不管虚函数的多少。那么类的大小是数据成员之和 + 一个虚指针(指向虚表)。每个存在着虚函数的类,都会有一个对应的虚表,虚表里面都是函数指针,他们分别指向自己的对应的虚函数。如果继承了父类,且实现了相应的虚函数,那么子类的虚表中,不会存在实现了子类虚函数对应的父类虚函数。而没有实现的父类虚函数则会存在子类的虚表中。绑定前提:执行到某一条指令时。需要调用某个函数静态绑定:编译器直接编译为调用该函数的地址。动待绑定:编译
2022-02-09 21:02:05
733
原创 C++11 &14
… 多个类型参数在c++新特性中增加不定参数的设定templatevoid print(const T& arg){}template<typename T, typename … Type>void print(const T& first, const Type&… args){cout << first << endl;print(args…)}可以实现多个不同类型的参数nullptr使用 nullptr 代替
2022-02-09 21:01:51
138
原创 C++体系结果
网站cplusplus,comcppreference.comgcc.gnu.orgSTL 六大部件(Components)容器(containers):存放数据的地方。分配器(allocators):数据需要内存地址需要分配器来实现,分配器一般作用在容器中算法(algorithms): 实现数据的处理迭代器(iterator): 数据不能处理容器,而是容器内的数据,迭代器负责区容器内的数据适配器(adapters):数据之间的转换使用到适配器仿函式(functors): 像函数的处理方
2022-02-09 21:01:13
192
原创 QT中的信号与槽
Q_OBJECT使用信号与槽的类中,必须要加入宏 Q_OBJECTsignal & slot信号与槽之间的绑定QObject::connect(sender , SIGNAL(signal()), receiver, SLOT(slot()));QObject :是QT所以类的父类connect() :是一个静态函数sender:是发送信号的对象名称signal():是发送的对象的信号receive:是槽函数对象的名称slot():是接受对象的槽SIGNAL() 和 SLOT(
2022-02-09 20:57:58
614
原创 QWidget
QWidget1.QWidget 是所有窗体的基类,也就是所有的显示类都继承了QWidget;2.在所有的窗体中,创建一个对象都要指明自己的窗体父类(父类有点不正确,应该说指明在哪个窗体里面)。如果不指明,那么自己就是一个独立的窗体。3.show() 函数是显示窗体,包括包括在该窗体里面的部件。当自己独立为一个窗体,自己不调用 show()是看不见效果。show()是一个槽函数,最好show() 函数在 ui 线程中使用,其他线程再次调用可能会奔溃。...
2022-02-09 20:57:42
480
原创 QString
字符集ASCII,AISO, ANSI,GB2312, GBK, UTF8,UTF16,UTF32.其中QT中的QString 使用UTF16 来实现。BOM标志,FF FE 是小端字节序FE FF 是大端字节序QString
2022-02-09 20:57:28
773
原创 C++STL
模板型别模板:模板缺省数据类型,在使用时传入数据类型,数据类型不同,定义的类也不同。非型别模板:模板缺省数据变量,在使用时传入数据类型变量,变量值不同,定义的类也不同。default 模板参数:和函数默认形参一样,在缺省的情况下,使用默认模板参数,且 默认模板参数 和 默认函数形参都是放在最右边。typename 关键字:在类中出现 A::type *ptr;编译器一般认为 A::type 是一个类的数据成员,关键字 typename 告诉编译器 A::type 是一个数据类型。模板成员:使用模板
2022-02-09 20:57:02
278
原创 mvc简单理解
MVCMVC: model , view,, control model:功能的实现,各个结构如何联系。view:与用户交互的界面,即整体功能需要呈现的应用。control:连接view 和 model 的桥梁,使程序松耦合。三者之间的关系1.control 创建 view :control 是桥梁,没有control 那么view触发的事件完全无效,所以control 创建view,并且把自己传递给 view,好让view 知道谁来传递信息(一个control 可以 有多个view,但是
2022-01-11 17:10:51
189
原创 C++面向对象设计模式
什么是设计模式每一个模式描述了一个在我们周围不断重复发生问题以及该问题的解决方案核心。这样你就可以一次又一次的使用该方案而不必要做重复的劳动。面向对象的两种思想底层思维:语言实现方面的思想,封装,继承,多态。抽象思维:隔离变化(将变化带来的影响减为最小),各司其职(接口一样,但是具体实现不一样),解决复杂性的问题分解问题:将复杂的问题分解为许多简单的问题,一个一个解决抽象问题:把握问题的核心思想,构建范化模型,先不考虑细节。变化 和 复用在设计模式中,要保证不断变化的过程中,程序的复用性还
2022-01-03 11:01:40
818
原创 const 与类型别名
typedef 与 using为类型取别名有量中使用方法typedef double wages; (wages 与 double 是同意)typedef wages base, *p; (base 与 wages 是同意,故 base 是 double, p 与 wages * 同意,故 p 是 double)using si = wages; (wages 与 si 是同意,故 si 是 double)constconst 修饰的函数或是变量时,是告诉编译器,该属性会不变。这里只描述关于
2021-12-04 08:53:43
1098
1
原创 c++中含有 static ,以及 面向对象的三种类型
static在类中只有数据成员才会占用内存,每创建一个对象,没有 static 修饰的数据成员会被创建一份,有static 修饰的数据成员无论创建对少此对象,在内存中只有一份。在类中 没有static 修饰的函数成员被调用时会将对象地址当作参数传入函数中,而有static 修饰的函数成员被调用时没有对象地址这一说法,static 修饰的函数成员就是为了在对象没有被创建前也可以调用函数去修改 static 修饰的数据成员,当然对象也可以修改static 此u是的数据成员。复合,委托,继承复合:类中有其
2021-11-23 22:24:32
382
原创 面向对象上带有指针的类
析构函数,拷贝构造函数, 拷贝赋值函数析构函数:在对象离开作用域时,对象会结束声明周期,对象会自动调用析构函数。拷贝构造函数:在创建一个的对象时,传入的参数为相同类的对象,将传入的参数的内容初始化为新对象的内容,编译器默认是对象内容的拷贝。拷贝赋值函数:先创建出一个对象,然后再将右值对象的内容直接拷贝到左值的对象内容中。带有指针的类 和 不带有指针的类 在 big tree中的区别不带有指针的类:可以不用实现析构函数,拷贝构造函数,拷贝赋值函数,因为对象的内容则是对象的全部。带有指针的类:一定要
2021-11-22 19:21:00
505
原创 面向对象上的单一类
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-11-21 13:43:46
505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人