方法调用 让我们看一下方法调用在运行时的过程(参照前文类在runtime中的表示) 如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作。如果调用的是类方法,就会到类对象的isa指针指向的对象(也就是元类对象)中操作。 以上的过程给我带来的启发: 重写父类的方法,并没有覆盖 ...
分类:
移动开发 时间:
2016-04-24 18:35:35
阅读次数:
307
编译器直接支持的数据类型称为基元类型(primitive type)。基元类型直接映射到FCL中存在的类型。比如在C#中,int直接映射到System.Int32类型。 checked和unchecked基元类型 对基元类型的许多算术运算都可能导致溢出。可以通过全局性的打开编译开关(项目属性-》生成 ...
分类:
其他好文 时间:
2016-04-20 13:11:16
阅读次数:
120
1. 友元的概念 (1)友元是C++中的一种关系,友元关系发生在函数与类之间或类与类之间 (2)友元关系是单项的,不能传递 2. 友元的用法 (1)在类中以friend关键字声明友元 (2)类的友元可以是其它类或者具体函数 (3)友元不是类的一部分,也不受类中访问级别的限制,可以直接访问具体类的所有 ...
分类:
其他好文 时间:
2016-04-20 00:23:24
阅读次数:
214
内容列表 对象模型(结构定义,类对象、元类和实例对象的关系) 消息传递和转发机制 runtime系统功能理解 对象模型 结构定义 对象(Object): OC中基本构造单元 (building block),用于存储和传递数据。 能够在objc.h的文件里查找到对象结构的定义,例如以下所看到的即对象 ...
分类:
其他好文 时间:
2016-04-11 14:11:56
阅读次数:
193
Flyweight定义: 避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类). 为什么使用? 面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是... ...
分类:
其他好文 时间:
2016-04-01 23:30:22
阅读次数:
283
注意, [1]友元的关系是单向的。如果声明类B是类A的友元类,则类B中的成员函数可以访问类A中的private成员,但类A中的成员函数不能访问类B中的private成员。 [2]友元的关系不能传递。如果类B是类A的友元类,类C是类B的友元类,不等于类C是类A的友元类。 Remark:关于谁在前面的问
分类:
其他好文 时间:
2016-03-16 00:53:40
阅读次数:
218
有一种重用代码的方法不需要用到严格的继承。如果想把一个函数用到多个类中,可以通过扩充的方式让这些类共享该函数。其实际做法大大体为:先创建一个包含各种通用方法的类,然后再用它扩充其他的类。这种方式就叫做掺元类。
分类:
编程语言 时间:
2016-03-13 16:10:19
阅读次数:
174
第十五章 友元、异常和其他 友元 友元类 表 0-1 class Tv { public: friend class Remote; }Remote类可以使用Tv的数据成员,Remote类在Tv类后定义 。 友元成员函数 表 0-2 class Tv; //前向声明 class Remote { p...
分类:
编程语言 时间:
2016-03-11 20:34:39
阅读次数:
178
一、文章来由上一篇写了友元函数,这一次写一个姊妹篇,继续深入探究一下友元类。二、定义
友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已...
分类:
编程语言 时间:
2016-03-11 10:28:48
阅读次数:
215
下面这种定义方式会报错: Undefined symbols for architecture x86_64 template <typename T> class longint{ public: T num; longint (T a = 0) { num = a; } friend ostre
分类:
其他好文 时间:
2016-03-11 01:16:32
阅读次数:
234