随笔分类 -  C++

摘要:这里用一个简单的宏来演示: #define SAFE_DELETE(p) do{ delete p; p = NULL} while(0) 假设这里去掉do...while(0), #define SAFE_DELETE(p) delete p; p = NULL; 那么以下代码: if(NULL 阅读全文
posted @ 2021-08-23 14:49 suwenyuan 阅读(208) 评论(0) 推荐(0) 编辑
摘要:#a会创建一个字符串:"a";a##b会创建一个新的token:ab。 #include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s\n",h(f(1,2))); pr 阅读全文
posted @ 2021-08-16 14:47 suwenyuan 阅读(706) 评论(0) 推荐(0) 编辑
摘要:1.构造函数的作用 在创建对象时,编译器会自动调用构造函数,初始化成员变量。 2.定义 构造函数名是类名; 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许; 函数体中不能有 return 语句。 #include <iostream> using namespace 阅读全文
posted @ 2020-02-10 13:00 suwenyuan 阅读(336) 评论(0) 推荐(0) 编辑
摘要:一、类 类(class)是面向对象程序设计的最基本的概念,是C++最强有力的特征,是进行封装和数据隐藏的工具,它将一个数据结构与一个操作集紧密地结合起来。类对象是类的实例,用类对象模拟现实世界中的事物比用数据对象更确切。 1.类与结构体 结构体是C的一种自定义的数据类型,它把相关联的数据元素组成一个 阅读全文
posted @ 2020-02-09 11:45 suwenyuan 阅读(717) 评论(0) 推荐(0) 编辑
摘要:一、函数重载 函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。 注意:c语言不允许函数重载 下面同名set,但是不同的形参列表,执行不同的任务。 #include "iostream" using namespace s 阅读全文
posted @ 2020-02-08 15:56 suwenyuan 阅读(806) 评论(0) 推荐(0) 编辑
摘要:入门级 1.基本数据类型 可参考链接:https://www.cnblogs.com/AntonioSu/p/12273701.html 2.字符串类型 可参考链接:https://www.cnblogs.com/AntonioSu/p/11957499.html 3.容器 常用容器:https:/ 阅读全文
posted @ 2020-02-07 18:30 suwenyuan 阅读(152) 评论(0) 推荐(0) 编辑
摘要:如下只针对于64位机器 整形类 1. int 占4个字节 用来定义-2^31~2^31-1范围内的数 2. long 占4个字节 用来定义-2^31 ~ 2^31-1范围内的数 3. long long占8个字节 用来定义-2^63 ~ 2^63-1范围内的数 4. short 占2个字节 用来定义 阅读全文
posted @ 2020-02-07 17:09 suwenyuan 阅读(656) 评论(0) 推荐(0) 编辑
摘要:一、一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack):编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。 2、堆区(heap):是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收,值得注意的是它与数据结构的堆是两回事,分配方 阅读全文
posted @ 2020-02-07 15:11 suwenyuan 阅读(370) 评论(0) 推荐(0) 编辑
摘要:1 全局变量 全局变量申明之前冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 全局变量和静态全局变量相同点: 二者都存储在全局区。 全局变量(小)和静态全局变量(大)的作用域不同: 非静态全局变量的作用域是整个源程序, 当一个源程序由多 阅读全文
posted @ 2020-02-07 10:41 suwenyuan 阅读(395) 评论(0) 推荐(0) 编辑
摘要:析构函数是在对象消亡时,自动被调用,用来释放对象占用的空间。 有四种方式会调用析构函数: 1.生命周期:对象生命周期结束,会调用析构函数。 2.delete:调用delete,会删除指针类对象。 3.包含关系:对象Dog是对象Person的成员,Person的析构函数被调用时,对象Dog的析构函数也 阅读全文
posted @ 2020-02-06 17:27 suwenyuan 阅读(20026) 评论(0) 推荐(0) 编辑
摘要:什么是封装 隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互。 封装的优点 确保用户代码不会无意间破会封装对象的状态 被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码。 实现方法 通过访问控制符实现封装 public protected private (1)public成员可以 阅读全文
posted @ 2020-02-06 17:23 suwenyuan 阅读(314) 评论(0) 推荐(0) 编辑
摘要:作用 c++很重要的一个特征就是代码重用,而代码重用就是通过继承实现。 概念 子类是父类的一个子集,如下图关系 由图可知,院士是老师的子类,而基类的抽象程度最高,子类更加具体。 访问控制 取两者交集的较小者。 子类和父类的关系 子类就是特殊的父类 子类对象可以直接初始化父类对象 子类可以当做父类使用 阅读全文
posted @ 2020-02-06 16:27 suwenyuan 阅读(327) 评论(0) 推荐(0) 编辑
摘要:一、什么是多态 多态性就是不同对象收到相同消息,产生不同的行为。可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。 二、多态的种类 静态联编支持的多态性称为编译时多态性(静态多态性)。在C++中,编译时多态性是通过函数重载和模板实现的。利用函数重载机制,在调用同名函数时,编译系统会 阅读全文
posted @ 2020-01-15 14:42 suwenyuan 阅读(666) 评论(0) 推荐(0) 编辑
摘要:一、程序编译过程 程序编译流程: 预处理->编译->汇编->链接 具体的就是: 源代码(source coprede)→预处理器(processor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→链接器(Linker)→可执行程序(executab 阅读全文
posted @ 2020-01-15 14:28 suwenyuan 阅读(807) 评论(0) 推荐(0) 编辑
摘要:常用命令如下 g++ -g -std=c++11 a.cpp -std 指定c++的版本 -g 在可执行程序中包含标准调试信息 -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,缺省文件名是a.out. 阅读全文
posted @ 2019-12-09 22:28 suwenyuan 阅读(807) 评论(0) 推荐(0) 编辑
摘要:istringstream用法,见如下代码 #include <iostream> #include"sstream" using namespace std; int main() { istringstream is("I am\tlove C++\nand I love C"); string 阅读全文
posted @ 2019-12-05 14:59 suwenyuan 阅读(1361) 评论(0) 推荐(0) 编辑
摘要:一.初始化 string string1; string string2="hello world";string string3("hello world"); string string4(10,'h'); 二.对象的比较 可以用 <、<=、==、!=、>=、> 运算符比较 string 对象。 阅读全文
posted @ 2019-11-29 14:18 suwenyuan 阅读(268) 评论(0) 推荐(0) 编辑
摘要:1.双端队列常用操作 deq.front():返回双向队列的头部元素。deq.push_front(x):把元素x插入到双向队列的头部。deq.pop_front():弹出双向队列的第一个元素。 deq.back():返回双向队列的尾部元素。deq.push_back(x):把元素x插入到双向队列的 阅读全文
posted @ 2019-11-22 14:12 suwenyuan 阅读(699) 评论(0) 推荐(0) 编辑
摘要:set 和multiset相同点: 两者插入的元素都是有序的。 set 和multiset不同点同点: multiset允许集合内的元素是重复的 set:不允许集合内元素重复 以下对应是multiset可重复插入元素的例子 #include <iostream> #include <set> usi 阅读全文
posted @ 2019-11-22 14:10 suwenyuan 阅读(137) 评论(0) 推荐(0) 编辑
摘要:1.基本概念 优先队列: 与队列的用法是一样的,优先队列内部是通过堆排序实现的。 因为push和pop方法会导致元素变化,故而需要重新调整堆,而top是把堆顶元素输出。 priority_queue< type, container, function > type:数据类型; container: 阅读全文
posted @ 2019-11-22 11:27 suwenyuan 阅读(524) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示