当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

实例解析C++/CLI的"克隆"[VC/C++编程]

赞助商链接



  本文“实例解析C++/CLI的"克隆"[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

C++/CLI不但支持基于仓库的对象,同时也支持基于堆的对象;但是,假如想与其他基于CLI的语言(如C#、J#、Visual Basic)举行互操作的话,必必要清楚地知道,这些语言只支持基于堆的对象;当处于基于堆的对象环境中时,你与对象之间,永久只有"一臂之遥",比方说,两个给定的句柄h1与h2,只有在为这种句柄范例定义了呼应的赋值操作符时,*h1 = *h2才会工作正常,而对C++/CLI之外的其他语言中的范例来说,情形大概就不是这样了.一样地,一个顺从CLS的机制需求成立对象的一份副本,这种机制被称为"克隆".

利用CLI库中的Clone函数

请看例1中的代码,其利用了近似于矢量的一个System::ArrayList类,插1是程序的输出.

例1:

using namespace System;
using namespace System::Collections;
void PrintEntries(String^ s, ArrayList^ aList);
int main()
{
  ArrayList^ al1 = gcnew ArrayList;
  /*1*/ al1->Add("Red");
  al1->Add("Blue");
  al1->Add("Green");
  al1->Add("Yellow");
  /*2*/ PrintEntries("al1", al1);
  /*3*/ ArrayList^ al2 = static_cast<ArrayList^>(al1->Clone());
  /*4*/ PrintEntries("al2", al2);
  /*5*/ al1->Remove("Blue");
  al1->Add("Black");
  al1->RemoveAt(0);
  al1->Insert(0, "Brown");
  /*6*/ PrintEntries("al1", al1);
  /*7*/ PrintEntries("al2", al2);
}
void PrintEntries(String^ s, ArrayList^ aList)
{
  Console::Write("{0}: ", s);
  for each(Object^ o in aList)
  {
   Console::Write("  {0}", o);
  }
  Console::WriteLine();
}


  以上是“实例解析C++/CLI的"克隆"[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 7远程帮忙利用实例解析
  • Java程序最简单犯的21种错误实例解析
  • 基于J2EE的电子商务网站实例解析
  • 实例解析C++/CLI的串行化
  • 实例解析C++/CLI的"克隆"
  • 实例解析C++/CLI线程之多任务
  • 实例解析C++/CLI线程之线程状况长期性
  • <b>实例解析C++/CLI之开卷有益</b>
  • <b>实例解析C++/CLI之值范例</b>
  • <b>实例解析C++/CLI之代理与事件</b>
  • 实例解析C++/CLI之静态构造函数
  • 实例解析C++/CLI中的担当与列举
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .