有没有&用于在C ++构建器中调用Synchronize()

时间:2014-06-24 03:34:03

标签: c++builder

我的环境:

操作系统 - Windows7 Pro(32位)

IDE - RadStudio XE2 Update4

我想知道Synchronize()函数。

在线程程序中使用Synchronize()函数。关于在C +构建器中使用Synchronize(),示例如下(可以在here中看到)

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(&UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TMyThreadClass::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }

我感到困惑的是,在某些旧版本的C ++构建器(例如bcb6)中, 使用了Synchronize()

// Synchronize(UpdateCaption);

没有"&"在函数名之前;

同样在here中的delphi代码中, 没有"&"在函数名之前;

// Synchronize(UpdateCaption);  

那么,这是在C ++ builder

中使用Synchronize()的正确方法
// Synchronize(UpdateCaption);  

// Synchronize(&UpdateCaption);  

我在实际代码中尝试了两种方法,但在工作方式上似乎相同。 UpdateCaption和& UpdateCaption都返回函数地址吗?

1 个答案:

答案 0 :(得分:4)

  

那么,这是在C ++ builder

中使用Synchronize()的正确方法      

//同步(UpdateCaption);

     

     

//同步(& UpdateCaption);

它们都有效,但&是首选。

  

UpdateCaption和& UpdateCaption都返回函数地址吗?

是。如果在没有为参数列表指定括号的情况下引用函数/方法,则假定函数/方法的地址。 &只是让它更明确。