C++学习记录(14) 构造函数与析构函数
1. 编译器默认添加的函数 自写类的时候,如果没有显式的写出来构造函数、析构函数、拷贝构造函数、拷贝赋值函数。如果程序中这些函数被需要(被调用),编译器就会默认的创建这些函数。 默认的构造函数和析构函数都是空实现的。 默认的拷贝构造函数和拷贝赋值函数都是浅拷贝。 如果有自己写的一个或者多个构...
1. 编译器默认添加的函数 自写类的时候,如果没有显式的写出来构造函数、析构函数、拷贝构造函数、拷贝赋值函数。如果程序中这些函数被需要(被调用),编译器就会默认的创建这些函数。 默认的构造函数和析构函数都是空实现的。 默认的拷贝构造函数和拷贝赋值函数都是浅拷贝。 如果有自己写的一个或者多个构...
1. 代码 /* * @Brief: 常见排序算法汇总 * @Author: * @Date: 2021-07-01 */ #include <iostream> #include <algorithm> #include <vector> #include <queue> using namespace std; void printArray(int *a, int len){ for(int i = 0; i < len; i++) cout << a[i] << " "; cout << endl << endl; } void bubbleSort(int *a, int len){ for(int i = 0; i < len - 1; i++){ for(int j = 0; j < len - i; j++){ if(a[j] > a[j+1]) swap(a[j], a[j+1]); } } } void selectSort(int *a, int len){ for(int i = 0; i < len; i++){ int mi = i; for(int j = i; j < len; j++){ if(a[j] < a[mi]) mi = j; } if(i != mi) swap(a[i], a[mi]); } } void insertionSort(int *a, int len){ for(int i = 0; i < len;...
1. 环境 机器1:Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz,双核四线程,win10 x64,16G内存 机器2:Intel(R) Core(TM) i3-9100T CPU @ 3.10GHz,四核四线程。wn10 x64,8G内存 目的:大概测试一下2C4T与4C4T在计算密集型任务下的效率提升对比,内存大小、频率暂且忽略。 方法:使...
0. placement new 即 原地构造。 用法: int *p = new int(10); // new operator new(p) int(1000); // 在 p 指向的内存上 构造一个int对象,即placement new // 此时 *P 为 1000。 因为是在一个已有的空间上构造对象,所以,空间的释放,就由free或者delete负责了。 0.1 重载placement new 与后边的 3 :operator new的重载无...
0. 小数在计算机中的存储 两种方法: 定点 浮点 1. 定点数 顾名思义,小数点的位置固定的。 也就是说,用固定数量的bit存储整数部分,也用固定数量的bit存储小数部分,另外再用一个bit存储符号位。 计算时,将三个部分拼接起来,加个小数点即可。 优点:小数点位置固定,方便计算。 缺点:表示输的范围受...
0. 必要性 C语言中的类型转换,没有安全检查,安全性需要程序猿来保证,C++提供了4种类型转换的方法,在一定程度上保证转换的安全性。 重点是 dynamic_cast 1. const_cast 仅用于去除类型的const属性,也是四种类型转换中,唯一可以去掉const限制的方法。 只能转换 指针、引用、this(在类内的时候用)。 2. static_cast 隐...
1. 什么是智能指针 简而言之,为了更安全的使用指针。 实现方式简单来说,就是用一个模板类把一般的指针包装起来。用这个类来维护内部指针的释放操作。 std中有四种智能指针。 auto_ptr(已弃用) unique_ptr shared_ptr weak_ptr 2. auto_ptr 比较简单的智能指针,实现逻辑如下代码。 实现的原则是:内存空间只能由一个指针所拥有。...
0. 原材料 抓包工具:wireshark 许多文章都是使用浏览器去访问一个网站,抓http的包,进而分析下层的tcp协议过程,但是数据比较多,不清晰,所以我采用了TCP调试助手,这样的话,没有http数据的干预,比较清晰。 1. 环境 借用www.huawei.com的ip地址183.66.1...
0. 为什么要内存对齐? 经过内存对齐之后,一个最最主要的原因是可以使得CPU的内存访问速度大大提升。 内存空间按照byte划分,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列...
转自:https://www.cnblogs.com/stemon/p/4406824.html 前几天女票问了我一个阿里的面试题,是有关C++语言的const常量的,其实她一提出来我就知道考察的点了:肯定是const常量的内存不是分配在read-only的存储区的,const常量...
序: 记录学习过程中自己的理解以及遇到的问题,慢慢补充。 若有错误,还希望各位大佬不吝赐教。 0. 零零散散 0.1 公开数据集 Middlebury:https://vision.middlebury.edu/stereo/data/(室内) KITTI:http://www.cvlibs.net/...
0. 原材料 libSGM开源库是一个使用CUDA对半全局匹配算法SGM的加速实现版本。 英伟达显卡(算力 >= 3.5) cuda环境(我的版本是cuda 10.0) OpenCV(版本 >= 3.0) Cmake(版本>=3.1) 1. 源码下载和编译 1.0 代码clone 开源库地址: https://github.com/fixstars/libSGM 先把代码clone到本...
0. 原料 windows系统的主机 mosquitto软件 1. 下载和安装mosquitto mosquitto可以自己到GitHub上下载源码根据自己实际需求进行编译,也可以直接使用官方提供的二进制文件,我这里直接用的官方二进制文件。 到http://mosquitto.org/files/...
0. 模板 C++中除了有面向对象的思想,还有泛型编程的思想,泛型编程利用的主要技术就是模板。 C++中两种模板:函数模板、类模板 语法: template<typename T> 函数声明或定义 含义: template 固定的,声明创建模板 typename 表明后边的T是一种数据类型,也可以用class代替 T 类似形参,任意的合法字符都可以,习惯上用 T 模板有两种...
0. 基本语法 多态是面向对象的三大特性之一。 多态:多态即调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 多态分为两类 静态多态:函数重载 和 运算符重载 属于静态多态,是对函数名的复用。 动态多态:派生类和虚函数实现运行时多态。 静态多态的函数地址早绑定, 编译阶段确定函数地址。 动态多...