析构函数为什么不能有参数???
有一位程序前辈给我出了一道难题,为什么析构函数就不能有参数呢?
一直没找到直接证据,请大家帮忙
[解决办法]
如果析构函数可以有参数
1。多态就一团糟
2。子类就不知道如何析构父类
...
从理念上讲,一个object在释放自己的时候提供参数是说的过去的,你可以选择不同的自杀方式或者不同的杀人方式。
[解决办法]
事实上,在调用析构函数函数时,的确需要一个参数,就是this指针,不同的编译器传递this指针的方法也不同。既然this指针可以作为参数传递给析构函数,那么传一个参数是传,传两个参数也是传,只要有必要,想传几个参数就传几个参数,这在技术上绝对能做得到。但是问题是,现在的析构函数不需要额外的参数就能完成所有的工作,为什么还要多此一举,增加额外的参数呢?
从另外一个角度来讲,如果析构函数带有额外的参数,那么编译器应该用什么样的实参来调用这个析构函数呢?编译器肯定没有这样智能,这个实参肯定需要程序员来指定,而这样的话,不觉得很复杂吗?
[解决办法]
这样一来就要手动调用才能设置实参,而不能由系统自动调用了
[解决办法]
通过父类指针删除子类是多态的典型应用,如果析构函数带了参数,那么如何通过父类删除子类?
析构函数带了参数,那么在析构子类的时候,编译器就无法生成自动析构父类的代码,需要子类手动去析构父类,这个不是一个很充分的理由,只是会将语言复杂化。