• 回答数

    1

  • 浏览数

    303

创业宝贝
首页 > 武汉中专 > 罗田理工中专怎么样知乎贴吧考试题目答案解析下载

1个回答 默认排序
  • 默认排序
  • 按时间排序

曾在气院呆过

已采纳
LZ,你首先要了解的是什么是构造函数和析构函数。在类A中的A()就是构造函数,表示创建类A的实例时首先运行的函数,~A()是析构函数,表示A的实例到达生命周期被销毁时运行的函数。现在看main()里的for循环,当i = 1的时候,运行if判断的else A a;表示创建了一个A的实例,运行A(),输出A->,接着到达if判断语句的结尾,其实要是在else后面加上{}这2个花括号的话可能更直观点。到达结尾也就是表示实例a要被销毁,运行~A(),输出<-~A。接着运行A b,原理同上,接着又到花括号,表示运行周期到,销毁b,输出<-~B。接着继续进for循环,此时i = 2,运行C c,后面的输出原理就同上面了。就不累赘了。for循环结束后就运行func(),先A a,创建A的实例,运行A的构造函数,但是没有到func函数的结尾,所以暂时不运行A的析构函数。继续,下面是static B b,表示创建一个静态的实例b。静态成员等同于全局变量,是不会随着函数FUNC的结束而被销毁的。继续-再创建一个实例C。然后到达func的结束符“}”,从之前创建实例的次序反向依次运行析构函数,也就是先析构C,再析构A。由于B是静态变量,不会随着FUNC的结束而销毁,也就不会调用B的析构函数。接着再运行依次func,原理同上,有一点不同的是第二次运行static B b的时候由于已经有静态变量b的存在,所以第二次的static B b就不再创建实例b,也就没有b的构造函数了。继续继续,最后main()函数的运行周期到了,静态变量b的运行周期也就到了,要被销毁,运行b的析构函数,也就是最后的时候才输出<-~B说的很乱,不知道你看明白了没有主要是你要了解这个几个东西:1 构造函数和析构函数2 函数运行周期和析构次序3 还有就是一些成员变量的属性。最好多看些介绍面向对象的书籍,可能会比较容易理解你这个题目了饿,写的好累 问题补充:为什么说:有一点不同的是第二次运行static B b的时候由于已经有静态变量b的存在,所以第二次的static B b就不再创建实例b,也就没有b的构造函数了。 C和A不也是已经创建过了C 和A 是函数func的局部变量,不是全局变量,在func函数运行周期到了以后C和A也就被销毁了,不存在了。所以当下次func函数再次运行的时候又创建了C和A。也就是说,C和A是FUNC的成员变量,运行多少次FUNC就会创建和销毁多少次C和A,而B是静态变量,所以不管有多少次FUNC函数的运行,只会创建和销毁一次B。

罗田理工中专怎么样知乎贴吧考试题目答案解析下载

177 评论(10)

相关问答