C++
会飞的鱼zhh
这个作者很懒,什么都没留下…
展开
-
C++ Primer 5th学习笔记1 变量和基本类型
1、变量 类型转换转换的过程:非bool型的算术值赋值给bool类型,初始值为0则结果为false,否则结果为truebool赋值给非bool,初始值为false时,结果为0;初始值为true,结果为1 cpp语言规定的转义序列:名称符号名称符号名称符号换行符\n横向指标符\t报警符\a纵向制表符\v退格符\b双引号\"...原创 2019-03-10 21:19:46 · 160 阅读 · 0 评论 -
C++ Primer 5th学习笔记12 拷贝控制
拷贝控制1 拷贝、赋值与销毁 拷贝控制操作:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。1.1 拷贝构造函数 若一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。示例如下:class Foo{ public: Foo(); //默认构造函数 Foo(const Foo&...原创 2019-04-14 20:04:18 · 335 阅读 · 0 评论 -
C++ Primer 5th学习笔记13 操作重载与类型转换
操作重载与类型转换1 基本概念 重载运算符是具有特殊名字的函数:其名字由关键字operator和其后要定义的运算符号共同组成。可以被重载的运算符如下:运算符符号符号符号符号符号符号+-*/%^&|~!,=<><=>=++--<<>>==!=&am...原创 2019-04-14 20:08:37 · 266 阅读 · 0 评论 -
C++ Primer 5th学习笔记15 模板与泛型编程
模板与泛型编程1 定义模板1.1 函数模板 类型参数前必须使用关键字class或typename,示例如下:template<typename T> T valc (const T&, const T&);template<class U> U valc (const U&, const U&);template<ty...原创 2019-04-27 18:46:11 · 243 阅读 · 0 评论 -
C++ Primer 5th学习笔记16 标准库特殊设施
标准库特殊设施1 tuple类型 tuple是类似pair的模板,不同tuple类型的成员类型也不相同,但一个tuple可以有任意数量的成员tuple支持的操作操作描述tuple<T1, T2, ..., Tn> t;t是一个tuple,成员数为n,第i个成员的类型为Tituple<T1, T2, ..., Tn> t(v1, v2,...原创 2019-04-27 18:47:51 · 369 阅读 · 0 评论 -
C#调用C++生成的dll
1 新建工程 (1)首先新建C#控制台工程,文件—新建—项目,选择控制台应用,如下图所示: (2)在此工程中添加C++的动态链接库项目,右键解决方案(注意这里是解决方案,不是C#工程),选择添加,选择新建项目,如下图: (3)在添加新建项目的界面,选择VC++下面的Win32,然后选Win32项目,修改对应文件名称,如下图: (4)点击确定后进入设置向导,在应用程序类型中选择...原创 2019-05-02 21:16:52 · 3176 阅读 · 0 评论 -
C++堆和栈的区别和联系
1、堆和栈的含义在C++中,内存分为5个区:堆、占、自由存储区、全局/静态存储区、常量存储区1、栈: 由系统自动分配和释放内存,存放函数的参数值,局部变量的值等,分配方式类似于数据结构中的栈 。2、堆: 一般由程序员分配和释放内存(由new申请内存,delete释放内存), 若程序员不释放,会造成内存泄露,程序结束时可能由OS回收,分配方式类似于链表 。3、自由存储区: 是由malloc等...转载 2019-05-03 12:19:47 · 3014 阅读 · 0 评论 -
C++ Primer 5th学习笔记14 面向对象程序设计
文章目录面向对象程序设计1 OOP概述2 定义基类和派生类2.1 定义基类2.2 定义派生类2.3 类型转换与继承3 虚函数4 抽象基类5 访问控制与继承6 继承中类作用域7 构造函数与拷贝控制7.1 虚析构函数7.2 合成拷贝控制与继承7.3 派生类的拷贝控制成员7.4 继承的构造函数8 容器与继承面向对象程序设计1 OOP概述 面向对象程序设计的核心思想是数据抽象,继承和动态绑定。通过...原创 2019-05-07 09:37:45 · 264 阅读 · 0 评论 -
C++字节对齐
C和C++字节对齐文章目录C和C++字节对齐1. 什么是字节对齐2. 对齐的原因和作用3. 对齐准则4. 结果分析5. 字节对齐设置1. 什么是字节对齐 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。2. 对齐的原...原创 2019-05-15 14:45:58 · 855 阅读 · 0 评论 -
Opencv Mat矩阵操作
Opencv Mat矩阵操作1.生成矩阵:Mat image(240, 320, CV8UC3);第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一个大小为240×320的矩阵,里面的元素为8位unsigned型,通道数(channel)有3个。image.create(480, 640, CV8UC3);分配(或重...原创 2019-05-28 22:21:47 · 8685 阅读 · 3 评论 -
C++ Primer 5th学习笔记11 动态内存
动态内存1 动态内存和智能指针 在C++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针。delete则是接受一个动态对象的指针,销毁该对象,并释放与之相关联的内存。 动态内存的使用很容易出问题。若忘记释放内存,则会产生内存泄露;若在尚有指针引用内存的情况下就释放内存,则会产生引用非法内存的指针。 因此新标准库提供了两种智能指...原创 2019-04-04 18:48:48 · 275 阅读 · 0 评论 -
C++ Primer 5th学习笔记10 关联容器
关联容器1 使用关联容器 关联容器支持高效的关键字查找和访问,两个主要的关联容器类型是map和set。map中的元素是关键字-值(key-value)对:关键字起到索引作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字,set支持高效的关键字查询操作——检查一个给定的关键字是否在set中 标准库提供8个关联容器,如下表格所示。类型map和multimap定义在头文件ma...原创 2019-04-04 18:45:11 · 207 阅读 · 0 评论 -
C++ Primer 5th学习笔记9 泛型算法
泛型算法1 初识泛型算法 大多数算法都定义在algorithm,其中头文件numeric中定义了一组数值泛型算法。算法永远不会执行容器的操作,即永远不会改变底层容器的大小。只读算法 只读算法:只读取其输入范围内的元素,而不改变元素。例如:find,accumulate。accumulate定义在头文件中,接受三个参数。调用示例://对vec中的元素求和,和的初始值是0int n...原创 2019-04-04 18:32:17 · 284 阅读 · 0 评论 -
C++ Primer 5th学习笔记2 字符串、向量和数组
一、字符串、向量、数组1 标准库类型string 标准库类型string表示可边长的字符序列,使用时必须先包含string头文件#include &lt;string&gt;,文件中还需要声明using std::string;1.1 定义和初始化string对象eg声明形式描述string s1默认初始化,s1是一个字符串string s2(s1)s2是...原创 2019-03-10 21:22:35 · 169 阅读 · 0 评论 -
C++ Primer 5th学习笔记5 函数
函数1 函数基础 自动对象:只存在于块执行期间的对象,当块的执行结束后,块中创建的自动对象的值就变成未定义的。 局部静态对象:在程序的执行路径第一次经过对象定义语句初始化后,直到程序终止才被销毁,对象所在的函数结束执行也不会影响该变量。将局部变量定义成static类型即可变成局部静态对象2 参数传递 引用传递:形参是引用类型 值传递:实参的值被拷贝给形参时2.1 传引用参数...原创 2019-03-25 09:07:35 · 165 阅读 · 0 评论 -
C++ Primer 5th学习笔记7 IO库
IO库1 IO类常用的IO库类型和头文件如下表:头文件类型iostreamistream,wistream从流读取数据ostream,wostream 向流写入数据iostream,wiostream 读写流fstreamifstream,wifstream 从文件读取数据ostream,wofstream 向文件写入数据fstr...原创 2019-03-25 09:10:49 · 216 阅读 · 0 评论 -
C++ Primer 5th学习笔记3 表达式
1、算术运算符运算符功能描述+一元正号+ expr-一元负号- expr*乘法expr * expr/除法expr / expr%求余expr % expr+加法expr + expr-减法expr - expr 上述运算符的优先级中,由上往下,一元运算符优先级最高,其次是乘除运算,最后是加减运算,所有...原创 2019-03-18 12:54:40 · 206 阅读 · 0 评论 -
C++ Primer 5th学习笔记4 异常语句
语句try语句块和异常处理 C++语言中,异常处理包括以下几种:throw表达式,异常检测部分使用throw表达式,来表示程序遇到了无法处理的问题。try语句块(try block),异常处理部分使用try语句块处理异常,try语句块以关键字key开始,并以一个或多个catch子句结束。一套异常类,用于在throw表达式和相关catch子句之间传递异常的具体信息。1、try语句块...原创 2019-03-18 12:57:03 · 193 阅读 · 0 评论 -
C++ 链表总结
一、单链表问题定义ListNode节点结构体struct ListNode { int val; ListNode *next; //定义节点的后继 ListNode(int x) : val(x),next(NULL);//声明一个节点}1、链表反转 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;null ^ root 逆序的思...原创 2019-03-18 13:01:59 · 2888 阅读 · 0 评论 -
C++ Primer 5th学习笔记6 类
类 类的基本思想是数据抽象和封装,类的接口包括用户所能执行的操作;类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。1 定义抽象数据类型 从改进的Sales_data开始,其结构如下图所示:struct Sales_data{ std::string isbn() const {return bookNo; } Sales_data&...原创 2019-03-30 15:46:23 · 196 阅读 · 0 评论 -
vector对象增长容量大小测试
vector对象增长说明 在C++中,vector是一个非常好用的容器,该容器大小可变,而且将元素连续储存。如果容器的储存空间已满,此时向容器中添加新元素,则容器必须分配新的内存空间来保存已有元素和新元素,将已有元素从旧位置移动到新空间中,然后添加新元素,释放旧储存空间。这样就会导致每次添加新元素时,vector就执行一次内存分配和释放操作,性能会明显的变慢。 为了避免这种问题,标准库采用...原创 2019-03-30 15:51:17 · 653 阅读 · 0 评论 -
C++ Primer 5th学习笔记8 顺序容器
顺序容器1 顺序容器概述顺序容器类型 名称描述vector可变大小数组,支持快速随机访问。在尾部之外的位置插入元素或删除元素可能很慢deque双端队列,支持快速随机访问。从头尾位置插入/删除速度很快list双向链表,只支持双向顺序访问。在list中任何位置进行插入和删除操作速度都很快forward_list单向链表,只支持单向顺序访问。在任何位...原创 2019-03-30 15:56:50 · 298 阅读 · 0 评论 -
函数参数入栈解析
栈:用于维护函数调用的上下文,通常在用户空间的最高地址处分配,增长方向向低地址增长。在i386下,栈顶由esp寄存器进行定位,压栈的操作使栈顶的地址减小,即esp减小;弹出的操作使栈顶地址增大,即esp增大。栈保存了函数调用所需要的维护信息,这被称为堆栈帧(Stack Frame)或活动记录(Active Record),其包括如下内容:函数的返回地址和参数临时变量:包括函数的非静态局部变...原创 2019-08-04 22:19:45 · 5446 阅读 · 0 评论