C++里有友元函数,在Obfect Pascal里能实现吗?(100分)

  • 主题发起人 主题发起人 chy578
  • 开始时间 开始时间
C

chy578

Unregistered / Unconfirmed
GUEST, unregistred user!
这可以吗? 高手们?
 
what is 友元函数
 
Object Pascal 没有友元函数,它默认同一个 unit 中的 class 之间互为友元。
这个与 Java 的方法很类似, Java 默认同一个 package 中的 class 之间互为友元。
 
楼上那位,能举个例子来说吗? 反正这里的菜鸟多。。
 
unit Unit2;
interface
type
//在同一单元声明的两个类 TA TB
TA=class
private
F1:Integer;
public
property Value:Integer read F1;
procedure IncValue;
end;
TB=class
private
D:Double;
public
property Value:Double read D;
procedure IncAndMul(A:TA);
end;
implementation
{ TA }
procedure TA.IncValue;
begin
Inc(F1);
end;
{ TB }
procedure TB.IncAndMul(A: TA);
begin
D:=(D+A.F1)*A.F1
//在TB中访问TA的私有变量
end;
end.

unit unit1;
...
...
implementation
uses
Unit2;
{$R *.DFM}
var
A:TA;
B:TB;
procedure TForm1.FormCreate(Sender: TObject);
begin
A:=TA.Create;
B:=TB.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
A.Free;
B.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
A.IncValue;
B.IncAndMul(A);
Caption:=Format('%d %f',[A.Value,B.Value]);
end;
 
真是让我天开眼界了...... 谢谢
 
这就叫 友元? 明白 [^]
 
哈哈, 全都有分
 
咱不是冲着友元来的,就是冲着分来的!
 
多人接受答案了。
 
是的这不是友元函数,但是这种在一个类中访问另一个类的方法很好。。
 
后退
顶部