摘要:
C++对象和对象指针很少被讲到,但数据结构中(如链表、二叉树)函数调用时,经常涉及到对象指针,甚至是对象指针的指针。以链表的建立为例,当涉及到要修改链表中的结点时,那么函数参数就必须是对象指针或对象指针的指针。例1、ListNode *Head = NULL; CreateList(Head);//创建链表 PrintList(Head);//打印链表 运行一下,结果是什么都没打印!为什么呢?CreateList的参数明明是Head,指针型啊。查阅相关资料,CreateList的参数应该是指针的指针CreateList(ListNode **node),或者是指针应用,... 阅读全文
摘要:
在学c++的时候 我遇到的第一个问题就是这个引用,引用是什么东西,我的c++启蒙教科书是c++ primer plus,这本书上说的是:引用是已定义变量的别名,可以使用这个引用来表示这个变量;每当看到这句话的时候 我就有一种淡淡的的忧伤感,其实还是不懂, 这句话说的意思是说引用是个名字吗,那么引用占多大内存呢,我把这章从头看到尾 可惜对此只字不提, 由此可见写书者的诚意(至少我看不到), 本文就准备解析一下这个引用到底是个什么东东。 先说一下本文的结构,本文主要由三个问题1,引用占内存吗,多大 2.引用跟指针啥关系 3.为什么要发明引用呢?针对这三个问题本文希望从c逻辑和汇编底层层面进行剖.. 阅读全文
摘要:
初学者一般看这本书会比较吃力的第一卷前三章没什么,略看。456三章是面向对象思想基础,不大好理解,看不懂没关系。接着的各个章节都是从各个语法点渗透,慢慢传递思想。个人感觉讲“引用”和“拷贝构造函数“那章比较特别,在其他书里没有类似的东西。另外一个特别的就是讲多态和虚函数那章,也是非常深邃的。(我的是英文版,由于版本的缘故,就不说是第几章了,说内容)其他的部分基本没有什么值得特别提出来的,都是语法基础。第二卷主要讲标准库。特别的也就是讲多重继承和RTTI的部分。其他的也没什么。感觉TIC++主要的特色在于讲解为什么语言会这样设计,并且提到了很多底层的模型和思想性的东西。而讲解语法的部分比较粗略, 阅读全文
摘要:
由于c++不支持对象的动态多态,只有指针或引用支持动态多态。所以,使用一个句柄类(只包含指针数据成员)来支持对象的多态性句柄的使用一般包含如下两种情况:对象的多态性和对象的共同计数源代码如下:#include using namespace std;class point{public: point():x_cdt(0),y_cdt(0){} point(int x,int y):x_cdt(x),y_cdt(y){} int get_x() { return x_cdt;} int get_y() { return y_cdt;} point& set_x(int x)//· 阅读全文
摘要:
为了理解这个问题,我们必须首先弄明白“堆”和“栈”的概念。堆区(heap)—— 一般由程序员分配释放(如用new申请的内存), 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式 倒是类似于链表。栈区(stack)—— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 我们构造对象,往往都是在一段语句体中,比如函数,判断,循环,还有就直接被一对“{}”包含的语句体。这个对象在语句体中被创建,在语句体结束的时候被销毁。问题就在于,这样的对象在生命周期中是存在于栈上的。也就是说,如何管理,是系统完成而程... 阅读全文