C++
文章平均质量分 81
AHAOAHA
www.ahaoaha.top
展开
-
C++风格的四种类型转换方式
static_cast仅可以用于基本类型间的数据之间的相互转换。//eg:int main(){ int a = 5; long long int b = static_cast<long long int>(a); return 0;}const_cast不能用于不同类型之间的类型转换,仅仅用来为对象删除const/volatile属性,const_cast种的类型必须是指针/引用。int main(){ const int a = 3;原创 2020-12-22 12:18:39 · 226 阅读 · 0 评论 -
C++11的新特性
更加简单的初始化方式C++11提供在类中定义类的数据成员,可以直接在成员之后添加=[缺省值],当通过编译器自动生成的默认构造函数初始化对象时,对应的数据成员就会被初始化成对应的缺省值。class Test{ public: int _t = 100;};int main(){ Test t; //初始化完成后,t._t的值为100 return 0;}更加强大的{}在C++98中,数组可以使用{}来进行初始化,对自定义类型是不可以的。在C++11中,{}的使原创 2020-12-22 12:17:53 · 155 阅读 · 0 评论 -
cmake常用命令
内建函数cmake_minimum_required(VERSION xxx):指明所需要的最低cmake版本为xxxproject([PROJECT_NAME] [CXX][C][Java]):该函数用来定义工程名称,并指定工程支持的语言,支持的语言选项是可以忽略的,默认支持所有语言。set([VALUE_NAME] [VALIUE]):该函数用来显式的定义变量,[VALUE]是一个可变参数列表。message(SEND_ERROR|STATUS|FAUAL_ERROR "echo messag原创 2020-12-22 12:15:40 · 300 阅读 · 0 评论 -
fstream二进制读写问题
今日在写代码的过程中,使用fstream类对文件进行写入&读取操作,在程序结尾处总会抛出访问了已经释放过的内存的异常,经过耐心调试,终于发现了问题所在。起初我定义了一个简单的结构体:struct Info{ char _ch; int _count; string _str;};并使用fstream的二进制读写方式,直接将该结构体创建的对象写入一个文件中...原创 2018-12-03 13:36:38 · 1109 阅读 · 0 评论 -
浮点数在内存中的存储
浮点数在内存中的存储方式与整型数字是不同的,对浮点数的存储实际上是对IEEE754中规定的S、M、E的存储。浮点数:float、double、long double根据国际标准IEEE754,任意一个二进制浮点数可以被表示成下面的形式:(-1)S*M*@E(-1)^S表示符号位,当S=0,则表示正数;当S=1,则表示负数M表示有效数字,大于1,小于2(大于1小于进制)2^E表示位数...原创 2018-12-09 23:08:33 · 273 阅读 · 0 评论 -
scanf缓冲区刷新问题
最近在Linux终端写代码时,使用scanf输入一个字符,当不小心输入了一个退格键或者方向键时,程序就出现无限读取的现象,这显然是scanf的缓冲区内的字符无法刷新出去,即研究一下scanf缓冲区的刷新规则。scanf缓冲区的刷新规则当scanf从缓冲区读取走需要的数据之后,缓冲区应该会被清空,但在某些情况下,缓冲区并不会会清空,使用下面的代码检测一下什么情况下缓冲区不会被清空:输入数字...原创 2018-12-26 16:54:50 · 940 阅读 · 0 评论 -
C++模板
模板的基本概念与用法。模板函数模板函数即就是与类型无关的函数,当需要某种类型的该函数时,编译器就会自动生成这种类型的函数,编写者只需要定义好该函数的处理逻辑即可。模板函数的格式template<typename T1, typename T2, ..., typename Tn>[返回值] [函数名](...){ ...}//交换函数template<...原创 2018-12-30 14:12:01 · 145 阅读 · 0 评论 -
智能指针
点击此处跳转至原文地址智能指针出现的必要?在C++中,用户需要自己管理申请的内存,有时候会忘记释放所申请的内存;有时候因为程序执行流的改变导致申请的空间没有进行释放,就会造成内存泄露的问题。RAIIRAII是一种实现智能指针的思想,也就是将所申请的内存空间交给一个对象来管理,当对象的生命周期到达时,程序会自行调用对象的析构函数。智能指针智能指针的两个条件:RAII像指针...原创 2019-05-21 21:26:26 · 122 阅读 · 0 评论 -
浮点数在内存中的存储
点击此处阅读原文浮点数在内存中的存储方式与整型数字是不同的,对浮点数的存储实际上是对IEEE754中规定的S、M、E的存储。浮点数:float、double、long double根据国际标准IEEE754,任意一个二进制浮点数可以被表示成下面的形式:(-1)S*M*2E(-1)^S表示符号位,当S=0,则表示正数;当S=1,则表示负数M表示有效数字,大于1,小于2(大于1小于进制)...原创 2019-05-21 21:53:08 · 153 阅读 · 0 评论 -
常见的排序算法
阅读原文请点击此处本文代码托管于Github,阅读源码请点击此处交换排序冒泡排序冒泡排序是我接触最早的排序方法,第一次接触冒泡排序是在大一上C语言课的时候,冒泡排序是最简单的一种排序算法。//代码解析冒泡排序--> 小-->大void BubbleSort(std::vector<int>& v){ for(size_t i = 0; i &...原创 2019-07-02 12:57:14 · 151 阅读 · 0 评论 -
再谈C/C++内存管理
虚拟进程地址空间的分段在计算机中,不同的数据必须存放在不同的区域,内存会分出不同的区域。栈(向低地址生长)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。在执⾏行行函数时,函数内局部变量量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理理器器的指令集中,效率很高,但是分配的内存相对有限。共享区堆(向高地址生长)堆空间是内存分段中最大的...原创 2018-11-21 21:35:28 · 217 阅读 · 0 评论 -
单例模式
什么是单例模式?单例模式是设计模式的一种,在实际开发的过程中,有时需要定义一个只能创建出一个对象的类,这就叫做单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式设计方式饿汉模式饿汉模式及就是不管程序以后是否会用到改单例类对象,在程序main主函数开始执行之前,就创建出该单例类对象。缺点:有可能造成程序启动十分缓慢优点:当...原创 2018-11-08 13:04:46 · 197 阅读 · 0 评论 -
C++中的引用
C语言中,函数传递参数的方式有两种: 1.传值void Swap(int x, int y)//传值{ int tmp = x; x = y; y = tmp;}●以传值方式传递的参数,在函数调用过程中,会在目标函数内生成所要传递参数的临时拷贝(形参),当函数结束时,形参即销毁 ●优点:避免了函数调用的副作用 ●缺点:无法改变实参的值 2.传址(地址...原创 2018-06-12 15:09:31 · 509 阅读 · 0 评论 -
C++中的类和对象
类问题1:C语言和C++中struct定义的结构体有什么区别? 答:①C语言中函数不可以作为struct结构体的成员;C++中函数可以作为struct结构体的成员②C语言声明结构体类型之后,定义变量必须为—&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;struct 结构体名 变量名;C++声明好结构体之后,定义变量为—&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;结构体名 变量名原创 2018-06-25 13:07:32 · 503 阅读 · 0 评论 -
C++中类的static静态成员(数据成员和成员函数)及const修饰类成员
●原创 2018-06-27 12:48:55 · 1586 阅读 · 0 评论 -
C++中的友元和内联函数
友元函数创建一个类,让他里面仅仅只有一个私有变量:void Test(const Test& a){ a._a = 1;//可以在友元函数内部直接访问类的私有变量}class Test{friend void Test(const Test& a);//友元函数的声明;在哪个类里面声明,这个函数就是哪个函数的友元函数private: int _a...原创 2018-07-02 21:13:15 · 823 阅读 · 0 评论 -
C++中的虚拟继承(不包含虚函数)
●虚拟继承是C++编程语言里的一种语法,使得派生类如果继承基类多次,但只有一份基类的拷贝在派生类对象中。虚拟单继承#include&amp;lt;iostream&amp;gt;using namespace std;class Base//定义一个基类{public: void BaseTest()//在基类中定义一个函数 { cout &amp;lt;&amp;lt; &q原创 2018-07-09 22:04:32 · 672 阅读 · 0 评论 -
C++中的多态
什么是多态●多态就是同一事物在不同环境下的不同状态。多态的分类●静态多态:编译器在编译期间来确定程序具体调用哪个函数 ①函数重载:https://blog.csdn.net/h___q/article/details/80663135 ②泛型编程 ●动态多态:在程序运行时来确定程序具体调用哪个函数动态多态的实现条件●基类中必须包含虚函数,在派生类中必须对基类的虚函数进行重...原创 2018-07-10 17:33:55 · 503 阅读 · 0 评论 -
C++中的继承(不包含虚函数)
什么是继承? ●继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的类,称为派生类。 怎样实现继承? 继承权限继承权限分为public、protected、private三种权限。 ●protected权限专为继承而生,如果你希望你定义的类中的成员可以被它的派生类访问,同时不能在类外被直接访问,就定义为pro...原创 2018-07-07 21:12:20 · 1117 阅读 · 1 评论 -
带有虚函数的类不同方式继承下的对象模型
带有虚函数的单继承●带有虚函数的普通单继承#include&amp;amp;lt;iostream&amp;amp;gt;using namespace std;class Base//定义一个Base类{public: virtual void BaseTest1()//Base类中定义虚函数BaseTest1() { cout &amp;amp;lt;&amp;amp;lt; &原创 2018-07-15 20:51:26 · 780 阅读 · 0 评论 -
C++中动态内存管理
一、C语言中的动态内存管理原创 2018-08-06 13:33:45 · 472 阅读 · 0 评论 -
C++中函数重载
函数重载●在C语言中,不允许两个不同功能的函数使用相同的函数名。 ●C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、参数类型、参数顺序)必须不同,常用来处理功能类似数据类型不同的问题,这就叫做函数重载。为了解释为什么会出现这种情况,我编写了一段简单的代码,在VS2013环境下,分别用C编译器和C++编译器进行编译://编写一个简单的加法函数...原创 2018-06-12 13:17:10 · 662 阅读 · 0 评论