摘要:
我们先来看一段代码: 运行结果为: 第一个基类子对象A的起始地址是与派生类对象C是重合的。我们来看一张图片: 上图演示了this指针是如何调整的。在派生类的对象中,基类是作为派生类的子对象存在的,称为基类子对象,当派生类只继承于一个基类时,基类子对象的起始地址是与派生类对象相同的,而当派生类同时继承 阅读全文
摘要:
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型的定义,它是没有大小可言的,用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小 可以看到一个空类对象的大小1. 一个空类对象的大小是1,为什么不是0? 初学者肯定 阅读全文
摘要:
这篇文章主要介绍拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数,什么情况下调用赋值运算符。 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义,但是也没有显示的删除),编译器会自动隐式生成一个拷贝构造函数和赋值运算符,但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符, 阅读全文
摘要:
浅拷贝:又称值拷贝,将源对象的值拷贝到目标对象中去,本质上来说源对象和目标对象共用一份实体,只是所引用的变量名不同,地址其实还是相同的。举个简单的例子,你的小名叫西西,大名叫冬冬,当别人叫你西西或者冬冬的时候你都会答应,这两个名字虽然不相同,但是都指的是你。 假设有一个String类,String 阅读全文
摘要:
有时候我们希望定义这样一种变量,它的值不能被改变。例如,用一个变量来表示缓冲区的大小,使用变量的好处是当我们觉得缓冲区大小不再合适时,很容易对其进行调整。另一方面,也应随时警惕防止程序一不小心改变了这个值,为了满足这一要求,可以用关键字const对变量的类型加以限定; const int buffS 阅读全文
摘要:
复合类型(compound type)是指基于其他类型定义的类型,C++语言有几种复合类型,这里只介绍两种:引用和指针 一:引用 引用(reference)为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。 int ival = 102 阅读全文
摘要:
恢复内容开始 软件开发中,bug就像家常便饭一样,有了bug就需要修复,在Git中,由于分支是如此强大,所以,每个bug都可以通过一个临时分支来修复,修复后,合并分支,然后将临时分支删除。 当你接到一个修复一个代号101的bug任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等 阅读全文
摘要:
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。 如果要强制禁用Fast forward模式,Git就会在merge时生产一个新的commit,这样,从分支历史上就可以看出分支信息。 下面我们实战一下--no-ff方式的git merge 阅读全文
摘要:
人生不如意之事十之八九,合并分支往往也不是一帆风顺。 准备新的feature1分支,继续我们的新分支开发: $ git checkout -b feature1Switched to a new branch 'feature1' 修改readme.txt最后一行,改为: Creating a ne 阅读全文
摘要:
在版本回退里,你已经知道 ,每次提交,Git都把它们串i成一条时间线,这条时间线就是一个分支,截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支,HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支 每次提交,ma 阅读全文