0

我在 C++ 上工作过,我们使用下面的初始化列表来初始化基类的构造函数。

Derived::Derived(int x):Base(x) { 
    cout << "B's Constructor called";
} 

如何在目标 C 中实现相同的操作。如何在初始化时将值传递给基(超)类。可能吗?

谢谢。

4

4 回答 4

2

这里我们使用 super 来调用基类构造函数。例如:假设我们有一个基类,并且有这个启动器方法

// Base .h
- (id)initWithName:(NSString *)name;
@property (strong, nonatomic) NSString *name;

// Base.m
- (id)initWithName:(NSString *)name
 {
   self = [super init];
   if(self){
     self.name = name;
   }
  return self
 }

 // Derived.h
- (id)initWithName:(NSString *)name;

// Derived.m
- (id)initWithName:(NSString *)name
 {
   self = [super initWithName:name];
    return self;
 }

// This is how we can create an object of Derived class
Derived *derived = [[Derived alloc]initWithName:@"foo"];
于 2013-08-28T10:50:05.127 回答
0
- (instancetype)init {
    if (self = [super init]) {
       // your code here
    }
    return self;
}
于 2013-08-28T10:48:35.900 回答
0

在 Objective-C 中,没有构造函数,子类需要显式调用父类的 init 方法。喜欢[super init];

这是一篇描述Objective C对象初始化器的好文章。对象初始化

于 2013-08-28T10:49:15.847 回答
0

我们[super init];用来初始化你所有的超类。它可以满足您的要求。

于 2013-08-28T10:53:35.917 回答