美文网首页
日常随笔第九弹-类/构造函数/析构函数

日常随笔第九弹-类/构造函数/析构函数

作者: 没有北方的南方 | 来源:发表于2016-07-22 18:24 被阅读16次

类及构造函数/析构函数

class rectangel {//定义一个类
    var width : Double
    var height : Double
    var x : Double
    var y : Double
    static var i = 0
    init (){
        width = 0
        height = 0
        x = 0
        y = 0
    }//定义构造函数进行初始化,自定义构造函数,编译器将不再生成无参的构造函数
    func fat(change: Double) -> Double {
        width += change
        return width
    }//定义成员方法(变宽)
    
    class func infoprint(){//定义类方法
        i = 23
        print(i)
        print("谢谢观赏")
    }
    deinit{//析构函数:反初始化,释放已拥有的资源
        print("资源已经释放")
    }
}

//与结构体的区别:
//1.用let定义的结构体变量,成员不能修改
//2.结构体是值类型,在赋值的时候发生复制
//3.类是引用类型
//4.结构体成员方法需要加上mutating才能修改成员
//5.类中的成员变量构造函数默认没有参数,必须初始化


var xx1 = rectangel()//创建对象,在堆上分配空间
xx1.height = 30
xx1.width = 20
xx1.x = 50
xx1.y = 60
print(xx1.height, xx1.width, xx1.x, xx1.y)


//默认是为strong引用,可添加weak变为弱引用,(弱引用需要使用!取成员)
weak var xx2 = xx1
xx2!.height = 90
xx2!.width = 25
rectangel.i = 14//静态成员用类名调用
print(xx2!.height, xx2!.width, xx2!.x, xx2!.y, rectangel.i)

xx1 = rectangel()//当再次创建时,若无强引用,则原xx1中的资源将会被释放

var xx3 = rectangel()
xx3.height = 100
xx3.width = 35
xx3.x = 22
print(xx3.height, xx3.width, xx3.x, xx3.y)

rectangel.infoprint()

相关文章

网友评论

      本文标题:日常随笔第九弹-类/构造函数/析构函数

      本文链接:https://www.haomeiwen.com/subject/cvvijttx.html