黑马程序员技术交流社区
标题:
疑问一下:什么情况下构造函数间调用进入死循环。
[打印本页]
作者:
郝亚平
时间:
2011-11-11 11:06
标题:
疑问一下:什么情况下构造函数间调用进入死循环。
本帖最后由 郝亚平 于 2011-11-23 17:57 编辑
在定义类的时候,如果有多个构造函数。那么,基于代码优化与简化考虑,往往要在多个构造函数间进行相互调用,
但是多个构造函数在相互调用时候,比较特殊。不能直接用函数名去调用。得用到this语句做?
这里面有一种情况是构造函数调用陷入到死循环的情况(或者说对象初始化进入死循环的情况)。
那么,这个情况是什么呀?如何避免呀。谁给帮助总结总结。?谢谢。
--------
自己针对毕老师视频总结一下子:
A()
{
B();
}
B()
{
A();
}
当一个构造函数A调用了另一个构造函数B,那么,那个构造函数B就不能再调用这个构造函数A了。
也就是说,构造函数之间的调用不能随便调用。得保证是单向调用。而且像上面的那种情景分析也是非常不合理的设计。
双向调用构造函数,那么,这个有什么意思呀。。死循环。
----->其实毕老师,这样子提到这个问题。其实,是一种特殊情况,因为构造函数比较特殊嘛。特别强调构造函数的这种错误情况。
那么,这种情况又何止是针对于构造函数呀。对于所有的函数,无论是构造函数,还是一般的成员方法函数,都有相互调用。
都是出于代码简化与优化的考虑。只要它们之间存在着互相调用,就有可能引发这个死循环。
只要是方法调用,只要是违背了单向调用,而是采用了双向调用,就一定引发死循环。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2