14.5 同步练习

  1. 判断正误:枚举、结构体和类的实例在构造过程中会调用构造器。

  2. 判断正误:枚举、结构体和类的实例在析构过程中也会调用析构器。

  3. 判断正误:析构器deinit没有返回值,也没有参数,所以不能重载。

  4. 判断正误:构造器init没有返回值,可以重载,多个构造器重载情况下,运行环境可以根据它的外部参数名或参数列表调用合适构造器。

  5. 判断正误:构造器的主要作用就是初始化存储属性。

  6. 判断正误:构造器的主要作用就是初始化计算属性。

  7. 判断正误:存储属性要么在定义的时候初始化,要么在构造器中初始化。

  8. 判断正误:关键字convenience可以修改引用类型的构造器,这种构造器能够用于横向代理。

  9. 下列选项中会发生编译错误的是(  )。

A.

  1. struct Circle {
  2. var R : Double
  3. init() {
  4. R = 0
  5. }
  6. }

B.

  1. struct Circle {
  2. var R : Double
  3. init() {
  4. }
  5. }

C.

  1. struct Circle {
  2. var R : Double
  3. }

D.

  1. struct Circle {
  2. var R : Double = 0.0
  3. }
  1. 下列选项中会发生编译错误的是(  )。

A.

  1. class Circle {
  2. var R : Double
  3. }

B.

  1. class Circle {
  2. var R : Double = 0.0
  3. }

C.

  1. class Circle {
  2. var R : Double
  3. init() {
  4. }
  5. }

D.

  1. class Circle {
  2. var R : Double
  3. init() {
  4. R = 0.0
  5. }
  6. }
  1. 下列选项中会发生编译错误的是(  )。

A.

  1. class Dog {
  2. var name: String
  3. init(name: String) {
  4. self.name = name
  5. }
  6. convenience init() {
  7. self.init(name: "未命名")
  8. }
  9. }

B.

  1. class Dog {
  2. var name: String
  3. init(name: String) {
  4. self.name = name
  5. }
  6. init() {
  7. self.init(name: "未命名")
  8. }
  9. }

C.

  1. class Dog {
  2. var name: String
  3. init(name: String) {
  4. self.name = name
  5. }
  6. init() {
  7. self.name = "未命名"
  8. }
  9. }

D.

  1. class Dog {
  2. var name: String = "未命名"
  3. init(name: String) {
  4. self.name = name
  5. }
  6. }
  1. 关于析构器,定义正确的是(  )。

A. deinit   B. deinit()   C. Deinit   D. Deinit()