14.5 同步练习
判断正误:枚举、结构体和类的实例在构造过程中会调用构造器。
判断正误:枚举、结构体和类的实例在析构过程中也会调用析构器。
判断正误:析构器
deinit
没有返回值,也没有参数,所以不能重载。判断正误:构造器
init
没有返回值,可以重载,多个构造器重载情况下,运行环境可以根据它的外部参数名或参数列表调用合适构造器。判断正误:构造器的主要作用就是初始化存储属性。
判断正误:构造器的主要作用就是初始化计算属性。
判断正误:存储属性要么在定义的时候初始化,要么在构造器中初始化。
判断正误:关键字
convenience
可以修改引用类型的构造器,这种构造器能够用于横向代理。下列选项中会发生编译错误的是( )。
A.
struct Circle {
var R : Double
init() {
R = 0
}
}
B.
struct Circle {
var R : Double
init() {
}
}
C.
struct Circle {
var R : Double
}
D.
struct Circle {
var R : Double = 0.0
}
- 下列选项中会发生编译错误的是( )。
A.
class Circle {
var R : Double
}
B.
class Circle {
var R : Double = 0.0
}
C.
class Circle {
var R : Double
init() {
}
}
D.
class Circle {
var R : Double
init() {
R = 0.0
}
}
- 下列选项中会发生编译错误的是( )。
A.
class Dog {
var name: String
init(name: String) {
self.name = name
}
convenience init() {
self.init(name: "未命名")
}
}
B.
class Dog {
var name: String
init(name: String) {
self.name = name
}
init() {
self.init(name: "未命名")
}
}
C.
class Dog {
var name: String
init(name: String) {
self.name = name
}
init() {
self.name = "未命名"
}
}
D.
class Dog {
var name: String = "未命名"
init(name: String) {
self.name = name
}
}
- 关于析构器,定义正确的是( )。
A. deinit
B. deinit()
C. Deinit
D. Deinit()