
C++
天天爆零
这个作者很懒,什么都没留下…
展开
-
C++之gdb基本使用
1.什么是gdb? gdb是一个调试工具,可以使我们在linux环境下调试我们的c++代码2.基本用法1.gdb file_name:开始调试我们的代码2.run:开始调试代码,并运行到第一个断点处,所以我们在开始调试前需要设置断点3.n:运行到下一行代码3.s:若当前代码行为调用一个函数,则进入函数中4.b func_name/num:在某个函数或者某一行打上断点5.break info:把所有的断点信息打出来6.p name:把某个变量的值打出来,若全局变量和局部变.原创 2020-07-03 15:15:55 · 4222 阅读 · 0 评论 -
C++之容器删除
如果是顺序容器,如vector,string,deque,删除,插入操作会影响当前还有以后的迭代器,节点容器map,set,list就不会#include<iostream>#include<memory>#include<vector>#include<map>using namespace std;int main(){ map<int,int>mymap; for(int i=1;i!=5;i++)原创 2020-05-31 01:09:31 · 781 阅读 · 0 评论 -
C++ &&和move
代码说:#include <iostream>#include <utility>#include <vector>#include <string>using namespace std;class Object{public: Object(string name) { this->name...原创 2020-04-30 15:29:24 · 500 阅读 · 0 评论 -
g++编译多个c++文件
ma.cpp#include<iostream>#include "t.hpp"using namespace std;int main(){ node a; a.f(); return 0;}t.hpp#ifndef __THREAD_POOL_H#define __THREAD_POOL_Hstruct node{ void f();};#...原创 2019-09-21 17:04:03 · 738 阅读 · 1 评论 -
g++编译的过程
1.首先g++ -E test.cpp -o test.i 预处理文件 把所有#开头的都处理了2.g++ -S test.i -o test.s 编译阶段 把文件编译成汇编文件 仅做汇编处理 进行了语义分析 词义分析等3.g++ -c test.s -o test.o 汇编阶段 把文件汇编成机器码3.g++ test.o -o test 动态链接 g++ tets.o -static ...原创 2019-09-11 14:15:15 · 1384 阅读 · 0 评论 -
C++的四种转型
1.dymatic_cast<type>(a):用于类之间的转型,满足2种形式,同一个类型,或者为父子关系,运行期间会做检查,转型失败会返回0并抛出bad_cast.2.static_cast<type>(a):这个其实和传统的C语言的强制转换是一样的,它不会做任何检查,如果转型失败就会发生未知错误。3.const_cast<type>(a):将a转为c...原创 2019-09-04 11:49:50 · 534 阅读 · 0 评论 -
C++ 赋值和拷贝
无论是赋值还是拷贝,如果在缺少自定义的情况下都是浅拷贝,即按字节拷贝,如果类里面没有指针成员,是可以接收的,但如果有指针成员,无论是拷贝一方还是被拷贝一方的改变,都会引起对方的改变,所以我们需要自定义我们的赋值函数和拷贝函数,赋值函数是双方都已存在为前提,而拷贝函数是在类的初始化时调用的。...原创 2019-09-02 15:03:26 · 594 阅读 · 0 评论 -
C++ include 2种方式的区别
#include <> 和 #include "" 都会在实现定义的位置查找文件,并将其包含。区别是若 #include "" 查找成功,则遮蔽 #include <> 所能找到的同名文件;否则再按照 #include <> 的方式查找文件。另外标准库头文件都放在 #include <> 所查找的位置。一般来说 #include <&g...原创 2019-09-02 12:42:14 · 372 阅读 · 0 评论 -
C++为什么要重写拷贝函数和重载=
因为如果我们不重新安排这2个东西,它会直接用=号一一对应起来,这就会造成一个问题,如果类中有指针成员,若赋值一方出现了改动,就会造成被复制方的改动,这个显然是地址拷贝,会造成一些bug,所以java就明说了类都是地址拷贝,因为它没有指针,而C++有指针,所以有些东西还是需要注意的,而且=号重载时应该判断一下右值是不是自身,因为指针一般都要先释放内存,再重新赋值,如果我自己=我自己,就会...原创 2019-08-31 13:09:40 · 354 阅读 · 0 评论 -
C++ virtual
1.什么是virtual virtual是一个C++的修饰符,用于修饰函数,被修饰的函数称为虚函数。2.为什么需要? 在C++中,我们都知道要实现多态有2种方法,一种是重写,一种是重载,重载是横向的,意思是只发生在同一个类中,根据函数的参数个数,类型不同从而实现重载,而重载则是纵向的,发生在继承中,子类函数覆盖父类函数,父类指针指向子类实体时,应该实现运行时多态。3.通常用...原创 2019-08-28 17:22:00 · 1827 阅读 · 0 评论 -
孤儿进程,僵尸进程
1.基本概念 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述...原创 2019-08-18 00:06:23 · 113 阅读 · 0 评论