Objective-C-objc的重载以及void指针?
@interface MyClass : NSObject{}
- (void)show;
@end
@implementation MyClass
- (void)show {
NSLog(@"MyClass");
}
@end
@interface MySubClass : MyClass
{}
@end
@implementation MySubClass
- (void)show {
NSLog(@"MySubClass");
}
@end
一个临时函数:
- (void)show:(void *)temp {
MyClass *mc = (MyClass *)temp;
[mc show];
}
在主函数中调用:
MySubClass *msc = [[MySubClass alloc] init];
void *temp = (void *)msc;
[self show:temp];
控制台的结果://MySubClass
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。可以相当于id类型。
子类对父类方法的重写是不可逆的,即只要重写了方法父类的方法就会被“忘掉”。在Main中使用MySubClass创建了实例temp,在临时函数show中将这个temp强制转换成了MyClass类型,但是之前由MySubClass重写的show方法已经是子类的重写后的方法,而不是父类的方法,所以最后输出的是MySubClass。不知道我讲的清不清楚,可能有讲的不对的,可以百度继承和重载。