
C++基础
文章平均质量分 50
主要用于记录在复习c++基础的重点知识
追寻未来的少年
菜鸡c++开发
展开
-
g++常用命令
g++常用命令常用命令默认生成a.outg++ test.cpp指定生成可执行文件g++ test.cpp -o test.out生成调试和警告信息 g++ -g -Wall test.cpp -o test.out编译选项option功能举例输出格式-E预处理宏替换、头文件展开、去掉注释g++ -E test.cpp -o test.i*.i-S生成汇编文件g++ -S test.i -o test.s*. s-c生原创 2021-03-23 13:08:32 · 3795 阅读 · 0 评论 -
gdb命令
g++ 简单编译指令g++ -g -std=c++11 main.cpp -o main.outgdb main.out常用的指令如下:1. 运行指令:命令功能run®运行到第一个断点处,再次执行r时将从头开始continue©继续执行到下一个断点处,或运行结束next(n)单步跟踪执行,遇到函数调用时不进入函数,直接跳过step(s)单步调试,如果遇到函数调用,将进入到函数内部until(u)在一个循环体内单步跟踪时,可以运行程序直到退出原创 2021-03-22 18:18:28 · 245 阅读 · 0 评论 -
c++笔记----面向对象抽象继承与动态绑定
面向对象一、核心思想 面向对象程序设计的核心思想: 数据抽象,继承和动态绑定。· 数据抽象:将类的接口与实现分离· 继承: 定义相似类型以及对其相似关系建模· 动态绑定:一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象二、继承2.1 基类负责定义再层次关系中所有类共同拥有的成员定义:基类中类型是否相关有两种类型的成员函数需要定义,以及相关的访问控制:①、动态绑定: 类型相关的虚函数定义,类型在程序运行时动态绑定,接受的参数必须是一个对象的引用或者指针类型, virtu原创 2021-03-22 15:31:12 · 126 阅读 · 0 评论 -
c++笔记----拷贝控制
拷贝控制本章笔记将记录,类在控制拷贝,赋值、移动和销毁的时候都干些什么。学习的重点主要关注以下五个个与拷贝控制有关的特殊的成员函数:拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数拷贝控制操作的定义:当类需要进行构造,赋值,析构的时候需要进行的操作叫做拷贝控制操作。一、 拷贝、赋值和销毁本小节主要关注拷贝构造函数,拷贝赋值运算符和析构函数的相关特性,以及使用这些拷贝控制操作的时机。当我们没有显示的定义这5个特殊的拷贝控制函数时,编译器时常会隐式的帮我们定义好这些拷贝控制函原创 2021-03-22 15:30:49 · 123 阅读 · 0 评论 -
c++笔记----构造(析)函数能否调用虚函数
构造函数能够调用虚函数吗?在构造函数中调用示例代码class base{public: base(){func()} virtual void func(){cout<<1<<endl};};class derive{public: derive():base(),data(2){} virtual void func(){cout << data << endl;};private: int data;};int m原创 2021-03-22 15:30:04 · 136 阅读 · 0 评论 -
c++笔记----this指针
this指针this是一个特殊的指针1. 指向调用该成员函数的那个对象。2. 是一个隐含每一个非静态成员函数的特殊指针。对象调用成员函数1. 编译器先将对象的地址赋予this指针2. 通过this指针调用成员函数ps: 每次适用成员函数时,都隐式的使用了this指针this指针的隐式声明1. 创建对象时,this将被隐式声明为 className *const this; · this时常量指针,this不能被改变。2. 对于类中的const成员,this指针类型为原创 2021-03-22 15:29:23 · 177 阅读 · 0 评论 -
c++笔记----static
static关键字作用修饰普通变量1. 修改变量的存储区域和生命周期,使变量存储在静态存储区,在main函数 运前就分配了空间。2. 如果有初始值就初始化它,如果没有初始值,系统用默认值初始化它修饰普通函数1. 表明函数作用范围,仅在定义函数的文件内才能适用。2. 在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定义为static。修饰成员变量1. 修饰成员变量使所有的对象只保存一个该变量,2. 不需要生成对象就可以访问该对象修饰成员函数原创 2021-03-22 15:27:39 · 88 阅读 · 0 评论 -
c++笔记----new和malloc的区别
new和malloc的区别属性new/delete是操作符是c++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持返回类型new:内存分配成功后返回的是对象类型的指针,类型严格与对象匹配,无需类型转换;是类型安全的malloc: 内存分配成功后返回void* 指针,需要通过强制类型转换将void*转换为需要的类型;分配失败new:抛出bad_alloc异常malloc: 返回NULL重载C++允许重载new/delete操作符,特原创 2021-03-22 15:26:54 · 101 阅读 · 0 评论 -
c++笔记----inline 内联函数
内联函数inline特征相当于将inline函数中的内容直接copy到inline函数调用处。不用执行进入函数的步骤,直接执行函数体;相当于宏,却比宏多了类型检查,真正具有函数特性编译器一般不内联包含循环、递归、switch 等复杂操作的内联函数;在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数。编译器对inline处理过程替换inline函数体复制到inline函数的调用点处分配空间为所用的inline函数中的局部变量分配内存空间参数映射将原创 2021-03-22 15:26:06 · 144 阅读 · 0 评论 -
linux下vscode环境配置
文章目录linux下vscode环境配置编译器,调试器安装Cmake安装vscode中插件安装vscode文件配置launch.jsontasks.jsonlinux下vscode环境配置编译器,调试器安装sudo apt update#通过以下命令安装编译器和调试器sudo apt install build-essential gdb#安装成功确认gcc --versiong++ --versiongdb --versionCmake安装#安装sudo apt install原创 2021-01-30 21:58:22 · 1256 阅读 · 0 评论 -
c++笔记 ---- 多重继承-虚基类
多重继承-虚基类多重继承具有相同祖先的普通基类继承具有相同祖先的虚基类继承虚基类声明关于虚基类合理的创建标题,有助于目录的生成如何改变文本的样式如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入多重继承多重继承也成MI,描述的是有多个直接基类的类。和单继承一样,公有MI表示的也是is-a关系。必须使用关原创 2020-08-05 15:50:25 · 487 阅读 · 0 评论 -
c++笔记----运算符重载和友元
运算符重载为什么需要重载重载的限制不能重载运算符可以重载的运算符仅成员函数重载重载的作用机理重载的区别:成员函数与非成员函数友元友元种类友元的创建友元函数应用运算符重载为什么需要重载运算符重载是一种形式的C++多态,重载的概念扩展到了运算符上,允许赋予C++运算符多种含义,允许将运算符重载扩展到用户定义的类型。编译器将根据操作数的数目和类型决定使用哪种加法定义。重载的限制重载的运算符(有些例外情况)不必是成员函数,但必须至少有一个操作数是用户定义的类型。不能重载运算符重载后的运算符必须至少有一原创 2020-07-07 08:58:16 · 300 阅读 · 0 评论