朋友让我帮忙找答案,今天早上必须要交,我也没弄过几天程序就丢了好多年了,没办法不做伸手党了,鄙视我没事,但是好心人看见一定要帮帮我啊!!!
写出下列程序的执行结果。
using System; class BaseClass { public BaseClass(){ //构造函数 Console.WriteLine("Call BaseClass Constructor!"); } ~BaseClass(){ //析构函数 Console.WriteLine("Call BaseClass Destructor!"); } } classDerivedClass : BaseClass //派生类 { public DerivedClass(){ //构造函数 Console.WriteLine("Call DerivedClass Constructor!"); } ~DerivedClass(){ //析构函数 Console.WriteLine("Call DerivedClass Destructor!"); } } class Class //程序入口 { static void Main(){ DerivedClass d = new DerivedClass(); } }
有vs ,跑一下就行了啊
Call BaseClass Constructor!
Call DerivedClass Constructor!
Call DerivedClass Destructor!(这一行要注意,主要是你不知道什么时候会有GC的运行,所以这行输出,不知道什么时候)
析构函数是先调用子类的析构函数再一次调用父类的析构函数
为什么不是这个结果呢?
Call BaseClass Constructor!
Call DerivedClass Constructor!
Call DerivedClass Destructor!
Call BaseClass Destructor!
@samudra.lee: 我上面少写了一个,
自己调试一下,构造函数 先父类再子类,析构函数 是先子类再父类。
创建子类时,肯定是先先创建父类,再创建子类(没有父亲,哪有儿子)
析构的话,按照C++的话先先释放子类再释放父类
呵呵