
C++
文章平均质量分 88
繁华的梦境
热爱编程
展开
-
模板和泛型编程(上)
利用C++函数重载的特性可以写一个通用的交换函数,可以交换数据类型不同的数据,但这样代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数,而且极容易出错。这里的Vercor不是一个具体的类,他是类模板,通过这个模板来识别参数的类型并生成对应的模板类。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类,类模板只能够通过显式实例化。当我们用不同类型的参数使用函数模板时,就称为函数模板的实例化。原创 2022-10-29 21:32:28 · 882 阅读 · 3 评论 -
C++动态内存管理
如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是:new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。...原创 2022-08-10 14:30:50 · 472 阅读 · 15 评论 -
C++类和对象(初始化列表,友元,静态成员,内部类)
内部类就是外部类的友元类,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元,不能通过外部类的对象去访问内部类1. 内部类可以定义在外部类的public、protected、private都是可以的。2. 注意内部类可以直接访问外部类中的static、枚举成员,不需要外部类的对象/类名。3. sizeof(外部类)=外部类,和内部类没有任何关系...原创 2022-07-29 14:33:33 · 577 阅读 · 12 评论 -
C++入门基础(下篇)
在早期的标准里,规定使用auto修饰的变量,是具有自动存储器的局部变量,而C++11标准规定了auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。//类型声明为auto,可以根据a的类型自动推导b的类型也为intdoubletmp=2.2;//同理,推导c的类型为douobleautod=Test1();return0;}注意。......原创 2022-07-21 15:29:18 · 1152 阅读 · 30 评论 -
C++类和对象(二)
因为对象是定义在函数中的,函数调用会建立栈帧,栈帧中的对象构造和析构也要符合后进先出的原则。*所以st1先构造,st2后构造,st2先析构,st1后析构注意数据结构的栈和堆和内存分段区域的栈和堆没有绝对的联系,属于两个学科各自的命名,但是数据结构栈和系统分段栈(函数栈帧)的对象都符合后进先出。.........原创 2022-07-15 20:40:25 · 1350 阅读 · 35 评论 -
C++类和对象(一)
目录面向过程和面向对象初步认识类的定义类的作用域类的实例化类的访问限定符及封装类的对象大小计算类成员函数this指针面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。比如一个外卖系统面向过程:下单、接单、送餐三个过程面向对象:客户、商家、骑手,关注的是三个类对象之间的关系类的定义class Name{ //类体:由成员函数和成员变量组成原创 2022-07-13 20:23:38 · 11240 阅读 · 27 评论 -
C++日期类的实现
通过日期类的实现可以帮助我们更好地理解类的“六大默认成员函数”。原创 2022-07-09 19:38:26 · 1550 阅读 · 19 评论 -
C++入门基础(上篇)
为什么我们会在同一个作用域中声明相同的变量或者函数呢?1.普通的命名空间2.嵌套的命名空间3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中C++为了防止命名冲突,把自己库里面的东西都定义在一个std的命名空间中1.使用命名空间的名称+作用域限定符虽然麻烦,每个地方都要指定,但这是最规范的方式2.使用using将命名空间中成员引入3.使用using namespace命名空间名称引入看原创 2022-07-06 20:50:37 · 2176 阅读 · 26 评论