事实#2:对象变量实际上是指针

定义Fraction之类的对象变量时,如


Fraction*myFract;


事实上是定义了一个名为myFract的指针变量。这个变量定义为指向Fraction类型的数据,即你的类名称。使用


myFract=[Fraction alloc];


来创建Fraction的新实例时,是在为Fraction对象的新实例分配存储内存(即,存放结构的空间),然后使用结构的指针,并将指针变量myFract存储在其中。

将对象变量赋给另一个对象变量时,如下所示


myFract2=myFract1;


只是简单地复制了指针。这两个变量最后都指向存储在内存中的同一结构。因此,改变myFract2引用的(即指向的)一个成员,将更改myFract1引用的同一个实例变量(即结构成员)。