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

2015-09-10  本文已影响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了

上一篇 下一篇

猜你喜欢

热点阅读