回复 19楼 Devil_W
还有这个JCOOP只是"模拟",所以本质上它不可能实现多态,因为你把它完全展开后会发现它只不过是一堆结构体和函数指针而已.....
也正因此,你可以使用GCC直接编译.
但是写JCOOP的意义在于,使用它美化了一部分代码,使得设计类更加的像一些更为高级的语言(C++,JAVA)
尤其是类的构造与析构,会方便许多.
因为在JCOOP中所有类(堆上的)的使用都用的都是一个指针而已,
所以这样的类在转换时不会检测转换的错误,至于转换的结果,则符合地址靠前的原则.
当然JCOOP中还有一种类是在栈上的(以及用以表述继承关系)的时候,
其实就是
child {
parent
....
}
这样的关系,转换的时候依旧遵循靠前的原则
而每个类的方法可以单独在一SHARE part中设计,这样就避免了每声明一个"类"时,分配过多的内存
用来存储函数指针.
著名的GObject(GNOME的基石之一)也是如此,因为C语言本身并没有这些机制
所以说只是一种"模拟",正像前面说的,是让你的C中设计"类"和JAVA等一样方便.
至于像泛型这类,如果你使用的是指针类型的,那么还是强制转换[并不会检测错误]
至于重载运算符,C语言本身就决定了无法通过宏和函数指针来实现,
而至于闭包等一些概念,也是不行的,当然你可以把函数指针的传递套着理解成类似的概念,
尽管这是不科学的.....