权重域名

已备案域名,老域名交易,高权重域名购买,百度权重域名出售,权重域名买卖,万网已备案老域名注册查询抢注转让,买老域名,二手老域名,鹰潭网站建设

构造函数的调用顺序

作者:zhushican 发布:2014-08-14 分类:建站教程 阅读: 次 0条评论

构造函数总是与众不同,牵涉到多态性的时候也不例外。尽管构造函数不是多态的(实际上它们都是static方法,只是声明的时候没有直说),但是能理解它在复杂的类系和多态的环境下是如何工作的,仍然十分重要,在创建派生类对象的过程中,基类的构造函数总是先得到调用,这样一级一级的追溯上去,每个基类的构造函数都会被调用。这种做法是很合乎情理的,因为构造函数有一个特殊的任务:它要知道对象是不是被正确地创建了。

派生类只能访问它自己的成员,它看不到基类的成员(因为它们通常是private的)。只有基类的构造函数才知道怎样初始化它的成员,同时也只有它才有权限进行初始化。因此“把所有的构造函数都调用一遍”就变得非常重要了,否则对象就没法创建了。这就是为什么编译器会强制每个派生类都要调用其基类的构造函数的原因了。如果你不在派生类的构造函数里明确地调用基类的构造函数,那编译器就会悄悄的调用那个默认的构造函数。如果没有默认构造函数,编译器就会报错。要是类没有构造函数,编译器会自动为你准备一个默认构造函数。

复杂对象的构造函数的调用顺序是这样的:1、调用基类的构造函数。这是一个递归的过程,因此会先创建继承体系的根,然后是下一级派生类,以此类推,知道最后一个继承类的构造函数。2、成员对象按照其声明的顺序进行初始化。3、执行继承类的构造函数的正文。

构造函数的调用顺序是非常重要的。继承的前提就是你能看到基类,并且还能访问它的public和protected成员。也就是说,轮到处理派生类的时候,所有的基类成员都应该已经准备好了。对于普通方法,构造过程已经结束了,因此对象已经完全建好了。但那是对构造函数来说,这还只是假设。为了确保这一点,只能让构造函数先调用基类的构造函数。这样,当你执行派生类构造函数的时候,基类成员就都已经初始化完毕了,可以供你访问了。“能用构造函数访问数据成员”也是“只要有可能,就在定义类的成员对象(也就是用合成的方式放进去的对象)的时候就进行初始化”的原因。如果你遵循了这种做法,那么当前对象的所有基类成员,以及它自己的成员对象的初始化就有保证了。

除非注明,本站所有文章均为 zhushican 原创,转载请注明出处! 标签:构造  函数  调用  顺序  
« 上一篇下一篇 »

构造函数的调用顺序:目前有0条评论