随笔分类 -  C++

摘要:在C++template编程的时候,可能需要对数据类型T进行变量类型判断,可以使用type_info配合typeid直接获得。 typeid会把类型信息保存到type_info对象里面,当需要具体信息时,可以通过成员函数直接提取。 1 class Base{ }; 2 struct STU{ }; 阅读全文
posted @ 2021-10-08 11:49 补码 阅读(736) 评论(0) 推荐(0)
摘要:1、当用一个对象去初始化同类的另一个对象时,会引发拷贝构造函数的调用 fun f2;fun f1 = f2;// 注意下面不会调用拷贝构造函数(会调operator=函数),注意字眼“初始化”fun f1, f2;f1 = f2; 2、作为形参的对象,使用拷贝构造函数初始化 fun f1; fun 阅读全文
posted @ 2021-10-07 16:10 补码 阅读(173) 评论(0) 推荐(0)
摘要:内核栈:每个进程保留在内核内存中的内存区域,供(内核)内部函数调用时使用。 用户栈:驻留在不受保护(用户可操作)的用户内存中。 静态区域:static变量和全局变量的生命周期是一样的,从出生到程序结束,二者都放在静态存储区。 栈(stack):先进后出,增长方向是从高地址向低地址增长。作用是局部变量 阅读全文
posted @ 2021-08-05 11:56 补码 阅读(139) 评论(0) 推荐(0)
摘要:1 #include<QDebug> 2 3 int sum(int x, int y){ 4 return x+y; 5 } 6 7 int sub(int x, int y){ 8 return x-y; 9 } 10 11 int mul(int x, int y){ 12 return x* 阅读全文
posted @ 2021-08-05 10:37 补码 阅读(22) 评论(0) 推荐(0)
摘要:1 class fun 2 { 3 fun(); 4 5 fun& operator=(fun&) = delete; // 不允许=号运算符重载 6 fun(const fun&) = delete; // 不允许拷贝构造 7 } 阅读全文
posted @ 2021-08-05 10:21 补码 阅读(38) 评论(0) 推荐(0)
摘要:预处理:处理源代码中#开头的预编译指令,规则如下:1、"#define"删除并展开对应宏定义。2、处理所有的条件预编译指令。如#if/#ifdef/#else/#endif。3、"#include/#import"包含的文件递归插入到此处。4、删除所有的注释"//或/**/"。5、添加行号和文件名标 阅读全文
posted @ 2021-07-29 09:50 补码 阅读(181) 评论(0) 推荐(0)
摘要:C++提供了4种类型转换操作符来应对不同场合的应用。 操作符 注释 const_cast 去const属性 static_cast 静态类型转换,例如int转换成char dynamic_cast 动态类型转换,如子类和父类的多态类型转换 reinterpret_cast 仅仅重新解释类型,但没有进 阅读全文
posted @ 2021-05-13 19:39 补码 阅读(2529) 评论(0) 推荐(1)
摘要:本来想用一下Qt链表类 QLinkedList Class 但是看文档的时候发现这句话 官方都这样说了,那只能用std::list,说明如下,转自(https://blog.csdn.net/CV_Jason/article/details/83037127) List List使用一个doubly 阅读全文
posted @ 2021-05-13 19:07 补码 阅读(1645) 评论(0) 推荐(0)
摘要:QDockWidget悬浮在主窗口上方,主窗口最大化后,想到用resizeEvent函数后重新设置QDockWidget控件大小和位置, 发现数据是geometry()滞后的,不是当前的。 解决方法: 使用另外的方式触发setWindowState(Qt::WindowMaximized) 例如重新 阅读全文
posted @ 2021-05-11 18:38 补码 阅读(1114) 评论(0) 推荐(0)
摘要:1 QPixmap tempPix = pixmap.copy(x, y, 1, 1); // 获取坐标值位置处的像素图 2 imageBits = tempPix.toImage(); 3 if(imageBits.isNull() == false) 4 { 5 if(imageBits.all 阅读全文
posted @ 2021-04-19 22:46 补码 阅读(2551) 评论(0) 推荐(0)
摘要:数组的特点: 数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。数组的插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面的数据都要往前移动。但数组的随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址 阅读全文
posted @ 2020-11-22 13:03 补码 阅读(352) 评论(0) 推荐(0)
摘要:C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 简单的说就是,explicit 禁止类构造函数的隐式转换。 阅读全文
posted @ 2020-11-16 20:51 补码 阅读(158) 评论(0) 推荐(0)
摘要:并不是所有的语言都支持_cdcel调用规则,但是都支持_sdtcall调用规则, 假如你用VC做了一个DLL,导出了某些函数,如果你想这个DLL被其他语言也能调用的话,VB.DEPHI.PB..你的把他的调用约定声明为__stdcallwindows api都是_stdcall调用规则, 函数调用约 阅读全文
posted @ 2020-11-16 12:44 补码 阅读(297) 评论(0) 推荐(0)
摘要:自动变量类型推导 在定义变量时,使用auto可以让变量定义为初始化的值类型。 auto a = 1; auto b = string("123"); 返回变量类型推导 在模板函数内,返回值可以省去类型,由编译器推导。如果在C++11旧版本,需要使用decltype关键字手动推导。 template< 阅读全文
posted @ 2020-10-29 15:02 补码 阅读(450) 评论(0) 推荐(0)
摘要:既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,再者如何进行可靠高效的数据传输。这里就要使用到TCP/IP协议。9 1.简介 1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成。 IP层负责网络主机 阅读全文
posted @ 2020-09-27 15:11 补码 阅读(267) 评论(0) 推荐(0)
摘要:工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。 1. 简单工厂模式 该模式对对象创建 阅读全文
posted @ 2020-09-24 20:43 补码 阅读(212) 评论(0) 推荐(0)
摘要:函数模板( Function templates) 模板(Templates)使得我们可以生成通用的函数,这些函数能够接受任意数据类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数重载。这在一定程度上实现了宏(macro)的作用。它们的原型定义可以是下面两种中的任何一个: temp 阅读全文
posted @ 2020-09-23 23:35 补码 阅读(1917) 评论(0) 推荐(0)
摘要:C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。首先看一下Lambda表达式的基本构成: [函数对象参数](操作符重载函数参数)mutable或exception ->返回值{函数体} ① 函数对象参数; [],标识一个Lambda的开始,这部分必须存在,不能省略。函数 阅读全文
posted @ 2020-09-17 20:51 补码 阅读(160) 评论(0) 推荐(0)
摘要:一、常用文件打开方式 二、读写文件步骤(文本文件) 1、写文件步骤 1)#include <fstream> //包含头文件 2)ofstream ofs; //创建流对象 3)ofs.open("文件路径",打开方式); //打开文件 4)ofs << "写入的数据"; //写数据 5)ofs.c 阅读全文
posted @ 2020-02-17 12:01 补码 阅读(521) 评论(0) 推荐(0)