摘要:
1、C++对象内存包含两部分:字段和虚方法表指针vptr,vptr指向vtbl,vtbl包含类型信息和一组虚方法,虚方法按照类的定义顺序进行排列。2、成员方法并不占用对象内存,无论是static方法,还是non-static方法。3、那么,思考一下,对象是如何绑定到成员方法的呢? 对于程序员,方法分为成员方法和普通方法。对于编译器,没有成员方法,因为成员方法,会转化为普通方法。比如person.SetName(),对于编译器来说,会转化为SetName(person),student.SetName()转化为SetName(student)。3、那么问题来了,这种方式,显然无法满足,运行时多. 阅读全文
posted @ 2013-12-13 20:15
Andy Niu
阅读(216)
评论(0)
推荐(0)
摘要:
1、解决的问题: 考虑下面的需求,有个集合模版vector,实例化一个类vector,一个类vector,创建对象 double_Vector和int_Vector,我想把int_Vector赋值给double_Vector,这个需求是合理的。思考一下,能成功吗?2、我们知道,同一个模版实例化出来的模板类,之间没有任何关系,是不同的类型,根本不可能赋值的,因为编译器生成的copy构造和copy赋值,形参都是同一类型。double_Vector的copy构造和copy赋值的形参都是vector对象,那现在怎么办呢?3、解决办法: 建立模版成员方法,copy构造模版成员方法和copy赋值模版成.. 阅读全文
posted @ 2013-12-13 19:58
Andy Niu
阅读(309)
评论(0)
推荐(0)
摘要:
1、为什么使用traits? 考虑下面的需求,实现一个方法Advance(iter,n),接收一个迭代器iter和移动距离n,将iter向前移动n个距离。 分析,因为存在不同类型的迭代器,做同一件事情,大家的能力不一样,做法当然不一样。有的迭代器可以一下子移到目标,有的迭代器只能一步一步移动,进行n次。因此,在方法内,必须要判断迭代器的类型,然后进行相应的操作。这种方法当然不好,运行期判断类型,需要核对继承层次中的每个类,效率差。有没有更好的办法呢?2、解决办法: a、每个迭代器暴露一个接口,暴露自己类型的别名(使用typedef MyType Category),每个迭代器都使用相同的... 阅读全文
posted @ 2013-12-13 19:42
Andy Niu
阅读(373)
评论(0)
推荐(0)
摘要:
1、异常处理分为两个部分:抛出异常和捕获异常。2、抛出异常,类似于方法返回值,离开了作用域,局部对象销毁,因此需要有一个临时对象保存结果。C++特别强调,抛出一个异常,必定要一个临时对象接收,存在copy构造,这是不可避免的,因为抛出的异常已经离开了作用域,失去了控制权。3、捕获异常,类似于调用方法,将临时对象传递给catch中的局部对象,为了避免再次copy构造,catch语句应该使用引用。特别注意,内置类型的临时对象是不可修改的,也就是说,内置类型的临时对象不能赋值给non-const引用,但是异常对象是可以的,catch语句可以是non-const引用。4、捕获异常与调用方法的区别: . 阅读全文
posted @ 2013-12-13 19:04
Andy Niu
阅读(363)
评论(0)
推荐(0)
摘要:
1、为什么使用传const引用? a、被调方法中,形参不再进行copy构造,以及析构,提高效率。 b、传值,会出现对象切割的问题。2、有没有例外? 在编译器底层,引用是使用指针实现的。这就意味着,如果对象是内置类型,迭代器,函数对象,传值效率更高。因为传引用也就是传指针,而内置类型,迭代器,函数对象copy构造效率也很高,不会比copy构造指针效率差。 阅读全文
posted @ 2013-12-13 18:37
Andy Niu
阅读(1056)
评论(0)
推荐(0)
摘要:
1、软件开发工程中,常常出现争吵,为什么争吵? 存在两个解决方案,都有合理性。合理性越接近,争吵越激烈,比如合理性是5:5。如何合理性是9:1,估计不会争吵。2、争吵中,忌讳为私利。比如一个方案的合理性是4,但是这个方案对自己有利,自己可以少干活或者实现起来比较容易。3、争吵中,忌讳死不认错。为了维护自己的面子,拼命强调自己方案的合理性,指责别人方案的不合理性。同时不肯承认别人方案的合理性以及自己方案的不合理性。4、争吵中,忌讳太强势。有些人,自己的方案优于别人,争吵获胜后,还要嘲笑别人,从而显示自己的能力,这种人很惹人烦。做人要自信,坚强,认真,宽容,还要内敛,不要得理不饶人,处处显得比别. 阅读全文
posted @ 2013-12-13 18:18
Andy Niu
阅读(270)
评论(0)
推荐(0)
浙公网安备 33010602011771号