Objective-C のメソッドは C++ でいうところの virtual なのだろうか?
#include <stdio.h>
#import <objc/Object.h>
@interface B : Object
- (void)speak;
@end
@implementation B
- (void)speak
{
printf("speak B\n");
}
@end
@interface D : B
- (void)speak;
@end
@implementation D
- (void)speak
{
printf("speak D\n");
}
@end
int
main()
{
B *b = [[D alloc] init];
[b speak];
return 0;
}
をコンパイル,実行すると speak D と表示されるので,答えは "Yes" である.
このサンプルコードを書く時にうまくいかなかったこと
alloc の呼び出しが undefined になる.
これは以下のように解決できる.
- B を Object から派生させる.そのためには
#import <objc/Object.h>が必要になる. -
-lobjcで objc ライブラリをリンクする.
これらは Objective-C の環境では標準なのだろうか?
0 件のコメント:
コメントを投稿