
C++笔记
文章平均质量分 64
六灬道
这个作者很懒,什么都没留下…
展开
-
C++学习笔记
1、#pragma预处理命令 #pragma comment。将一个注释记录放置到对象文件或可执行文件中。 #pragma pack。用来改变编译器的字节对齐方式。 #pragma code_seg。它能够设置程序中的函数在obj文件中所在的代码段。如果未指定参数,函数将放置在默认代码 段.text中 #pragma once。保证所...原创 2018-08-05 16:50:15 · 129 阅读 · 0 评论 -
C++ primer笔记----拷贝控制
1、如果一个构造函数的第一个参数是自身类类型的引用(该引用几乎都是const引用),且任何额外参数都有默认值,则此构造函数是拷贝构造函数; 2、即使定义了拷贝构造函数,编译器也会合成一个拷贝构造函数; 拷贝初始化不仅在我们用=定义变量时会发生,在下列情况下也会发生: 将一个对象作为实参传递给一个非引用类型的形参; 从一个返回类型为非引用类型的函数返回一个对象; 用花括号列表初始化一个数...原创 2018-08-17 13:13:28 · 282 阅读 · 0 评论 -
C++ primer笔记----IO库
1、IO类分别定义在三个独立的头文件中 < iostream>定义了基于读写流的基本类型 < fstream>定义了读写命名文件的类型 < sstream>定义了读写内存string对象的类型 三个头文件皆在标准库中。 2、IO对象无拷贝或赋值,进行IO操作的函数通常以引用方式传递和返回流,其传递和返回的引用不能是const的。3、确定一个流对...原创 2018-08-23 10:01:00 · 157 阅读 · 0 评论 -
请实现一个函数,将一个字符串中的空格替换成
class Solution {public: void replaceSpace(char *str, int length) { if (str == NULL || length&lt;0)//非空判断 return ; int i = 0; int oldlength = 0;//字符串的长度 ...原创 2018-08-23 16:07:15 · 464 阅读 · 0 评论 -
C++ primer笔记----顺序容器
1、顺序容器类型 vector:可变大小数组,支持快速随机访问,尾部插入数据很快,其他位置可能很慢 deque:双端队列。支持快速随机访问,头尾插入/删除数据很快 list:双向链表。只支持双向顺序访问,在其任何位置插入/删除数据都很快 array:固定大小数组,不能改变大小。支持快速随机访问,不能添加或删除元素 string:与vector类似,专用于保存字符。随机访问快,在尾部插入/...原创 2018-08-28 17:16:44 · 334 阅读 · 0 评论 -
C++ primer笔记----类继承
1、面向对象程序设计的三个基本概念:数据抽象、继承和动态绑定(核心概念) 数据抽象:将类的接口与实现分离 继承:我们可以定义与其他类相似但完全不相同的新类 动态绑定:在使用这些彼此相似的类时,在一定程度上忽略他们的区别,统一使用它们的对象2、类的继承构成一种层次关系,在层次根部的为基类,其他类则直接或者间接的从基类中继承而来,称为派生类,基类负责定义在层次关系中所有类共有的数据成员,而派...原创 2018-08-21 19:53:53 · 298 阅读 · 0 评论 -
C++ primer笔记----关联容器
1、 关联容器与顺序容器有着根本的不同;关联容器的元素是按关键词来保存和访问的,顺序容器是按他们在容器中的位置来顺序访问2、关键词在关联容器中起到重要的作用,map中的元素是(关键字—值)对,关键词起到索引的作用,值是与索引相关联的数据。set每个元素只包含一个关键字,支持高效的关键词查找3、标准库提供8个关联容器,主要是map/set,是否重复关键字,顺序保存容器与否4、map的定义...原创 2018-08-29 14:11:37 · 183 阅读 · 0 评论 -
C++ primer笔记----动态内存
1、 对象生命周期:全局对象在程序启动时分配,在程序结束时销毁。局部自动对象,当我们进入其定义所在程序块时被创建,在离开块时被销毁。局部static对象在第一次使用前分配,在程序结束时销毁2、除了static和自动对象外,C++还支持动态对象的分配。动态分配的对象的生存期与它们在哪里创建无关,只有被显示的释放时,这些对象才会被销毁3、动态对象的释放是编程中极其容易出问题的地方,为了安全使用...原创 2018-09-01 18:17:07 · 263 阅读 · 0 评论 -
C++ primer笔记----泛型算法
1、泛型算法:算法是因为其实现了一些经典算法的公共接口,如排序和搜索。泛型是因为他们可以作用于不同类型的元素和多种容器类型甚至是内置数组。故称泛型算法2、基本上都定义在algorithm和numeric两个头文件中,这些算法遍历由两个迭代器指定的一个元素范围来进行操作,不对容器进行直接操作3、所谓泛型算法就是作用于容器和元素上面的一些操作的合集,在实际情况中要善于使用4、标准库基本上都...原创 2018-08-30 11:18:20 · 281 阅读 · 0 评论 -
多线程
进程是操作系统中执行工作的基本单元,是包含程序指令和相关资源的集合,每个进程和其他进程一起参与调度,竞争CPU、内存等系统资源。每次进程切换,都存在进程资源的保存和恢复动作,这称为上下文切换。同一个进程内部的多个线程,共享的是同一个进程的所有资源。一、多线程1、多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。2、多线程的进程在内存中有多...原创 2018-10-18 21:04:50 · 267 阅读 · 0 评论 -
进程
一、程序与进程1、进程结构一般由3部分组成:代码段、数据段和堆栈段;代码段是用于存放程序代码的数据;数据段则存放程序的全局变量、常量和静态变量;堆栈段中的栈用于函数调用,它存放着函数的参数、函数内部定义的局部变量,堆栈段还包括了进程控制块(Process Control Block,PCB);PCB处于进程核心堆栈的底部,不需要额外分配空间;PCB是进程存在的唯一标识,系统通过PCB的存在而感...原创 2018-10-19 09:49:57 · 337 阅读 · 0 评论 -
C++ primer笔记----类
1、成员函数的声明必须在类的内部,它的定义既可以在类的内部也可以在类的外部;2、this是一个常量指针,不允许改变this中保存的地址;默认情况下,this的类型时指向类类型非常量版本的常量指针;C++允许把const关键字放在成员函数的参数列表之后,此时,紧跟在参数列表后面的const表示this是一个指向常量的指针;使用const的成员函数被称作常量成员函数;常量对象,以及常量对象的引用或...原创 2018-08-17 10:26:24 · 219 阅读 · 0 评论 -
C++ primer 笔记----语句
1、复合语句是指用花括号括起来的语句和声明的序列,也被称作块,一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块里访问;块不以分号作为结束。2、悬垂else:如何确定某个else与哪个if匹配;C++规定else与离它最近的尚未匹配的if匹配,从而消除了程序的二义性。3、break语句的作用是中断当前的控制流;case关键字和它对应的值一起被称为case标签,case标...原创 2018-08-13 10:51:25 · 176 阅读 · 0 评论 -
C++ primer笔记---指针
1、指针存放某个对象的地址,要想获取该地址,需要使用取地址符(操作符&amp;amp;); 定义指针类型的方法将声明符写成*d的形式,其中d是变量名。 引用不是对象,没有实际地址,不能定义指向引用的指针;2、指针的值(即地址)应属下列4种状态之一: 1、指向一个对象; 2、指向紧邻对象所占空间的下一个位置; 3、空指针,意味着指针没有指向任何对象。 4、无效指针,也就是上述情况之外的其他值...原创 2018-08-10 11:19:03 · 432 阅读 · 0 评论 -
C++ primer笔记--引用
1、将声明符写成&amp;amp;amp;d的形式来定义引用类型,其中d是声明的变量名。2、引用即别名。3、引用本身不是对象,所以不能定义引用的引用。4、引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。...原创 2018-08-10 12:35:18 · 195 阅读 · 0 评论 -
指针和引用的区别
虽然使用引用和指针都可间接访问另一个值,但它们之间有几个重要区别。 1)引用不能为空,当引用被创建时,它必须被初始化。而指针可以为空值,可以在任何时候被初始化。 2)一旦一个引用被初始化为指向一个对象,它就不能被改变为另一个对象的引用。指针则可以在任何时候指向另一个对象。 3)不可能有NULL引用,必须确保引用是和一块合法的存储单元关联。 4)sizeof(引用)得到的是所指向的变量(对象...原创 2018-08-10 13:51:35 · 205 阅读 · 0 评论 -
C++ primer 学习笔记(一)
1、 main函数的返回类型必须为int。2、可寻址的最小内存块为字节,存储的基本单元为字。3、带符号类型可以表示正数、负数或0,无符号类型则仅能表示大于等于0的值。4、如果赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数 eg:unsigned char c = -1; c=255; 取模运算时,对于负数,应该加上被除数的整数倍,使结果大...原创 2018-08-06 18:02:46 · 972 阅读 · 0 评论 -
C++笔记---结构体、共用体、枚举
一、结构体 1、结构体和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,其次,相同结构的结构体变量时可以相互赋值的,而数组时做不到的。 2、C++中的结构体与类的区别: (1)class中默认的成员访问权限是private的,而struct中则是public的。 (2)class继承默认是private继承,而从struct继承默认是public继承。3、结构体...原创 2018-08-11 15:29:18 · 476 阅读 · 0 评论 -
C++ primer笔记----函数
1、函数定义包括:返回类型、函数名、形参列表(0个或多个,用逗号隔开)以及函数体。 通过调用运算符(一对圆括号,作用于一个表达式,该表达式是函数或者指向函数的指针,圆括号之内是一个用逗号隔开的实参列表)来执行函数,用实参初始化函数的形参,调用表达式的类型就是函数的返回类型。2、函数的调用完成两项工作:1)用实参初始化函数对应的形参;2)将控制权转移给被调用函数,此时主调函数的执行被暂时中断,被...原创 2018-08-14 20:40:27 · 193 阅读 · 0 评论 -
C++primer plus第六版第三章编程题代码
第一题:#include &quot;stdafx.h&quot;#include&amp;lt;iostream&amp;gt;using namespace std;int main(){ const int Inc = 12; int i, j,k; cout &amp;lt;&amp;lt; &quot;请输入身高:&quot; &原创 2018-08-07 17:43:36 · 272 阅读 · 0 评论 -
C++primer plus第六版第四章编程题代码
1、#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;int main(){ char name1[20]; string name2; char grade; int a...原创 2018-08-12 14:47:41 · 401 阅读 · 0 评论 -
C++ primer 笔记----表达式
1、重载运算符,当运算符作用于类类型的运算对象时,用户可以自行定义其含义;使用重载运算符时,其包括运算对象的类型和返回值的类型,都是由该运算符定义的,但是运算对象的个数、运算符的优先级和结合律都是无法改变的。 2、一个名字所代表的单元(地址)称为该名的左值,一个名字的值称为该名的右值; 因此当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中...原创 2018-08-12 20:07:26 · 234 阅读 · 0 评论 -
C++ primer 笔记--数组、vector
1、如果在函数内部定义了某种内置类型的数组,则默认初始化会令数组含有未定义的值。2、定义数组的时候必须指定数组的类型,不允许用auto关键字由初始值的列表推断类型。3、数组的元素应为对象,因此不存在引用的数组。4、可以对数组的元素进行列表初始化,此时允许忽略数组的维度。5、不能将数组的内容拷贝给其他数组作为其初始值,也不能用数组为其他数组赋值。6、允许定义数组的指针及数组的引用...原创 2018-08-08 08:20:05 · 280 阅读 · 0 评论 -
进程间通信
一、管道1、父子进程之间并不共享数据段和堆栈段,它们之间是通过管道进行通信的。2、管道的特点:1)数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,则需要建立两个管道。2)管道只能用于父子进程或者兄弟进程间通信,也就是说管道只能用于具有亲缘关系的进程间通信;3)管道没有名字(无名管道),管道的缓冲区大小是受限制的;管道所传输的是无格式的字节流。3、写入...原创 2018-10-19 10:42:00 · 299 阅读 · 0 评论