Talk:Classes: Difference between revisions

1,324 bytes added ,  12 years ago
Line 60:
 
--[[User:Bnlott|Bnlott]] 22:59, 1 July 2011 (UTC)
::Well sort of. For you code to compile, the compiler has to know how to dereference <code>bar->new</code> to begin with, meaning the type is already known, so it's not polymorphism by type. You can change function pointers on each instance, so it is dynamic dispatch per instance at run time. The value of this can be questioned: how is this better than storing relevant attributes in the struct, and let handler functions do different things accordingly? (note: it can be different, I'm just saying you have to think about it before designing such an interface--syntax sugar, if sugar at all, may come with drawbacks). Secondly, things like inheritance is still not supported at language level, if you want to add a new attribute and a new method to bar, the struct definition need to be changed, existing methods need to be type-coerced, you need to do a lot of type casting using them, and code becomes a mess real fast. And because each instance has its own function pointers, when you create a new instance, you now need to remember to copy all of them, at each level of inheritance, in correct order, etc. You main() function may look more "OO" like, but it's not sustainable when you need to extend it. The real question is, if you <i>need</i> OO, why use C? --[[User:Ledrug|Ledrug]] 23:32, 1 July 2011 (UTC)
Anonymous user