25、假设你开发了一个矩形类,将其中一个方法标记为指定初始化器。现在有一个正方形类继承自矩形类,按照以下声明为正方形类添加一个初始化器方法:-(id) initWithSide: (int) side;
以下是为 Square 类添加 initWithSide: 方法的实现:
#import "Square.h"
@implementation Square : Rectangle
- (id)initWithSide:(int)side {
self = [super init];
if (self) {
[self setSide:side];
}
return self;
}
- (void)setSide:(int)s {
[self setWidth:s andHeight:s];
}
- (int)side {
return self.width;
}
@end
在上述代码中, initWithSide: 方法首先调用父类的 init 方法进行初始化,若初始化成功,则调用 setSide: 方法设置正方形的边长。
26、在Fraction类的add:方法中添加一个计数器,以统计该方法被调用的次数。如何获取计数器的值?
要在Fraction类的 add: 方法中添加计数器,可在类中定义一个静态变量作为计数器。在 add: 方法中每次调用时将该计数器加1。要获取计数器的值,可以提供一个类方法来返回该计数器的值。示例代码如下:
#import <Foundation/Foundation.h>
// Define the Fraction class
@interface Fraction : NSObject
@property int numerator, denominator;
- (void) print;
- (void) setTo: (int) n over: (int) d;
- (double) convertToNum;
- (Fraction *) add: (Fraction *) f;
- (void) reduce;
+ (int) getAddInvocationCount; // 新增类方法用于获取计数器值
@end
static int addInvocationCount = 0; // 静态计数器变量
@implementation Fraction
// 实现add:方法,每次调用计数器加1
- (Fraction *) add: (Fraction *) f {
addInvocationCount++; // 原add:方法的实现代码
Fraction *result = [[Fraction alloc] init];
result.numerator = numerator * f.denominator + denominator * f.numerator;
result.denominator = denominator * f.denominator;
[result reduce];
return result;
}
// 实现获取计数器值的类方法
+ (int) getAddInvocationCount {
return addInvocationCount;
}
@end
在需要获取计数器值的地方调用 [Fraction getAddInvocationCount] 即可。
27、使用typedef和枚举数据类型,定义一个名为Day的类型,其可能的值为星期日、星期一、星期二、星期三、星期四、星期五和星期六。
可以使用如下代码来定义:
typedef enum { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } Day;
28、使用typedef定义一个名为FractionObj的类型,以便能够编写如下语句:FractionObj f1 = [[Fraction alloc] init], f2 = [[Fraction alloc] init];
typedef Fraction *FractionObj;
29、根据以下定义:float f = 1.00; short int i = 100; long int l = 500L; double d = 15.00; 确定以下表达式的类型和值:f + i, l / d, i / l + f, l * i, f / 2, i / (d + f), l / (i * 2.0), l + i / (double) l
1. f + i:f 为 float 类型,i 为 short int 类型,根据类型转换规则,i 会转换为 float 类型,结果类型为 float,值为 101.00。
2. l / d:l 为 long int 类型,d 为 double 类型,l 会转换为 double 类型,结果类型为 double,值约为 33.33。
3. i / l + f:先算 i / l,i 为 short int 类型,l 为 long int 类型,i 先转换为 int 类型,再转换为 long int 类型,i / l 结果

最低0.47元/天 解锁文章

77

被折叠的 条评论
为什么被折叠?



