在c#函式方法體中使用using,表明乙個類只能在當前方法體中存在,出了方法體就會呼叫該函式的析構函式。
但是該類必須實現了idisposable介面,並且除非該類的析構函式定義為虛函式且子類重寫了,否則都只會呼叫該類的析構函式,並不會像c++釋放全部記憶體,依然還是要clr去管理。
與c++基類定義為虛函式了,子類析構則自動呼叫子類析構再父類析構不同,c++基類析構定義為虛函式則是後繫結,動態聯編,會釋放全部記憶體。
c#:
class a : idisposable
public virtual void dispose()
}class b : a
public override void dispose()
}class program
console.writeline("1");
}}
c#輸出:
a construct
b construct
b dispose(因為override了,否則都是只呼叫a的析構)
c++:
#include#include#includeusing namespace std;
class a
virtual ~a() };
class b : public a
~b() };
int main()
c++輸出:
a construct
b construct
b dispose
a dispose
C 11中使用using的方法
在 c 中 using 用於宣告命名空間,使用命名空間也可以防止命名衝突。在程式中宣告了命名空間之後,就可以直接使用命名空間中的定義的類了。在 c 11 中賦予了 using 新的功能,讓 c 變得更年輕,更靈活。在 c 中可以通過 typedef 重定義乙個型別,語法格式如下 typedef 舊的...
C 中使用using的三種方法
c 中使用using的三種方法 using 命名空間,這種方法基本學習過c 的都用過,好處在於,寫 的時候不需要指定詳細的命名空間 using system.windows.media using system.windows.media.imaging 是用來簡化資源釋放的,在一定的範圍內有效,除...
C 中使用using的三種方法
using 命名空間,這種方法基本學習過c 的都用過,好處在於,寫 的時候不需要指定詳細的命名空間 using system.windows.media using system.windows.media.imaging 是用來簡化資源釋放的,在一定的範圍內有效,除了這個範圍時,自動呼叫idisp...