在Objective-C
中,当对实例的值使用简单的增量(@properties
)调用时,可以使用运行setter方法的++
(由实现指定)那个财产。这是一个例子......
@import Foundation;
@interface Z : NSObject
@property (nonatomic) int intVar;
@end
@implementation Z
- (void) setIntVar:(int)i {
printf("intVar is now %i.\n", _intVar = i);
// I could do other things here, too.
}
@end
int main() { Z *z = Z.new; z.intVar++; }
intVar is now 1.
我是C++
的新手,但是(目前尚未找到)使用class
“成员变量”重新创建此行为的方法。例如......
#include <iostream>
class X {
public:
void setIntVar(int x) { printf("setting intvar to: %i\n", _intVar = x); }
int _intVar;
};
X instanceOfX;
int main() {
instanceOfX._intVar++;
printf("X's intvar is %i\n", instanceOfX._intVar);
instanceOfX.setIntVar(instanceOfX._intVar + 1);
}
X's intvar is 1
setting intvar to: 2
差异是微妙的,但我只是想知道是否有办法强制设置增量(或设置,甚至),而不会使变量变为私有。