循环链表与单向链表十分相似,两者唯一不同之处就是,循环链表的尾节点的next属性指向了链表的首节点(非头节点,头节点是没有数据的,头节点的下一个有数据的节点我们称为首节点)。他的表现形式有常见的两种,如下图:...
上一篇文章中,我们看到了简单的赋值兼容模型,将子类赋值给父类对象时,调用共有的同名接口时,调用的依然还是父类的成员函数。在 C++ 中,有一个总要的概念,那就是多态。通过父类提供一些虚函数,让子类继承下去并实现为另外的...
C 没有关键字可以申请堆内存,只提供了一些库函数如malloc、calloc、realloc等。而C++提供了一个一系列新的关键字来处理堆内存,那就是new和delete,下面示例代码分别编写了C和C++各种申请内存的方式。...
在C++中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针 来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。它类似与static成员函数或成员变量,具有共享的属性。每一个实例化的对象都可以借助指...
atoi这个库函数实在的太强大了,很多细节上的处理是我们无法想象的,不过最近也尝试做了一下这个练习,发现真的不是那么简单,只实现了一部分功能。如将字符串”123”转换为123,”-0123”转换为-123。代码功能比较简陋,还有诸...
在构造一个对象时,默认会生成一个指向当前对象的指针,这个的目的就是为了带来方便,它就是this指针,举例几个常见this指针的用途。
在C中,我们只了解到有两种传参方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种传参方式,那就是引用(type &),引用传参给我们带来了更好的体验。那三者的具体区别在哪里呢?...
所有数组名都表示数组的首地址,并且这个地址是个常量,是不可以被赋值的。既然是地址常量,从某种角度说,他也是个指针,所以数组名和指针是等同的。那么我们就可以非常灵活的使用指针及数组名来访问数组中的元素。可以注意看...
上几篇文章我们介绍了加号运算符的重载,实现了两个类之间相加得出我们想要的结果,本文将介绍+=操作符的重载,使两个类的对象可以使用+=运算符来进行运算。其中要注意的是返回值为引用(&)的重要性。...
所谓智能指针,就是可以随便申请而无需管理自动释放,就像 java 或 C# 的垃圾回收机制一样。我们无需关心销毁只管尽情的申请,系统提供了一个 auto_ptr 类可以使用这样的功能。后面我们也会用简单的代码示例介绍 auto_ptr ...