C++,C#,Python

Andy Niu發表於2013-11-28

1、C++的思路:無論是基本型別,還是類型別,物件的傳遞提供了兩種方式,一個是整體拷貝,一個是複製引用。整體拷貝對應著copy構造和copy賦值,複製引用就是通過引用或者指標實現的,當然指標本身還是整體拷貝,也可以是引用。

  C++物件既可以分配在棧上,也可以分配在堆上,分配在堆上的物件必須手工delete

2、C# 的思路:類型別整體拷貝,代價大,基本型別代價小。基本型別是整體拷貝,類型別是複製引用。C#中的引用是對C++引用的強化,和C++指標的弱化。

  C++中引用必須是一個物件的別名,而且必須至始至終是這個物件的別名。

  C++指標可以修改指向物件的內容,可以修改指標的指向,也可以對指標加加減減。

  C# 的引用,可修改指向物件的內容,也可以修改指向,但是不能對引用加加減減。

  C#中的類型別永遠分配在託管堆上,會有GC負責回收記憶體。

3、Python的思路:把變數和實體徹底分開,變數可指向任何實體,不需要指定變數的型別,修改變數,表達的意思是:使它指向另一個實體。

相關文章