美文网首页
类和结构体(引用类型和值类型)

类和结构体(引用类型和值类型)

作者: 凌云壮志几多愁 | 来源:发表于2015-09-10 11:39 被阅读153次

    1.结构体总是通过被复制的方式在代码中传递,因此不要使用引用计数

    2.结构体有默认的成员逐一构造器,但是类没有

    例如:

    structiPhone {

    varlength:CGFloat=0

    varwidth:CGFloat=0

    }

    variPhone5 =iPhone(length:320, width:568)

    3.值类型被赋予一个变量,常量或者本身被船体给一个函数的时候,实际上操作的是其拷贝

    4.引用类型在被赋予到一个变量,常量或者被传递到一个函数的时,操作的是引用,并不是拷贝,引用的是已存在的实例本身而不是其拷贝

    这里是分割线--------------------------------------------------------------------

    我来说一下我对类和结构体(也就是引用类型和值类型)的理解吧:

    在这么一个情景中:

    我和小明相约一起在操场上玩遥控车。小明是富二代,我是一个穷屌丝,买不起遥控车,主要关注的遥控车而不是遥控器,遥控器的作用是为做一些改变

    //遥控车

    classRadioControlledCar {

    varspeed:Int=Int()

    init(speed:Int){

    self.speed= speed

    }

    }

    //遥控器

    classRemoteControl {

    varcar:RadioControlledCar!

    }

    引用类型:小明壕性大发,我们一人一个遥控器,但是美中不足的是:越有钱越抠,他让我和他玩同一辆遥控车

    (1).当我让四驱车加速前进的时候,小明遥控器对应的四驱车是不是也在加速前进了。注意:现在是我来操作遥控车

    varxm_s_Control =RemoteControl()

    varmy_Control =RemoteControl()

    xm_s_Control.car=RadioControlledCar(speed:0)

    my_Control.car=xm_s_Control.car

    my_Control.car.speed=50

    println(xm_s_Control.car.speed)//小明的角度来看汽车速度为:50

    println(my_Control.car.speed)//我的角度来看汽车速度:50

    角度不同而已,汽车都是同一辆汽车:

    (2).现在小明感觉不高兴了,你给我车加速,那我就偏用我遥控器来减速。注意:现在是小明来操作遥控车

    xm_s_Control.car.speed=20

    println(xm_s_Control.car.speed)//小明的角度来看汽车速度为:20

    println(my_Control.car.speed)//我的角度来看汽车速度:20

    值类型:小明感觉自己的车被操纵了,简直不能忍,果断也给我买了一辆一模一样的遥控车,让我自己到边上去玩。

    //遥控车

    structRadioControlledCar_S {

    varspeed:Int=Int()

    }

    //遥控器

    classRemoteControl_S {

    varcar:RadioControlledCar_S!

    init(){

    }

    }

    varxm_s_control_s =RemoteControl_S()

    varmy_Control_s =RemoteControl_S()

    xm_s_control_s.car=RadioControlledCar_S(speed:20)

    my_Control_s.car=xm_s_control_s.car

    my_Control_s.car.speed=50

    println(my_Control_s.car.speed)//我的角度来看汽车速度:50

    println(xm_s_control_s.car.speed)//小明的角度来看汽车速度没有发生改变还是为:20

    xm_s_control_s.car.speed=80

    println(xm_s_control_s.car.speed)//小明的角度来看汽车速度为:80

    println(my_Control_s.car.speed)//我的角度来看汽车速度为:50

    己很明显我们之间相互没有干扰摩擦,他玩他的,我玩我的,就这样,有一个土豪朋友,免费得到一辆遥控车。

    这是我在yy了

    相关文章

      网友评论

          本文标题:类和结构体(引用类型和值类型)

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