Saya baru saja menemukan kode ini dan beberapa pencarian Google tidak menemukan penjelasan tentang sintaksis misterius ini (bagi saya).
Hashtable^ tempHash = gcnew Hashtable(iterators_);
IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
Apa sih yang dimaksud dengan tanda sisipan? (Ini gcnew
juga baru bagi saya, dan saya bertanya tentang itu di sini .)
Jawaban:
Ini adalah C ++ / CLI dan tanda sisipan adalah ekuivalen dikelola dari * (pointer) yang dalam terminologi C ++ / CLI disebut 'pegangan' ke 'tipe referensi' (karena Anda masih dapat memiliki pointer yang tidak dikelola).
(Terima kasih kepada Aardvark karena menunjukkan terminologi yang lebih baik.)
sumber
Secara umum, punctuator
%
adalah^
sebagai punctuator&
adalah*
. Dalam C ++&
operator unary dalam C ++ / CLI%
operator unary .Saat
&ptr
menghasilkan aP*
,%mngd
menghasilkan diMO^
.sumber
Ini berarti bahwa ini adalah referensi ke objek yang dikelola vs pointer C ++ reguler. Objek di belakang referensi tersebut dikelola oleh runtime dan dapat dipindahkan di memori. Mereka juga mengumpulkan sampah secara otomatis.
sumber
Ketika Anda mengalokasikan memori yang dikelola, memori itu dapat dipindahkan oleh pengumpul sampah. Operator ^ adalah penunjuk untuk memori yang dikelola, yang terus menunjuk ke tempat yang benar bahkan jika pengumpul sampah memindahkan objek yang ditunjuknya.
sumber
Dari MSDN, sepertinya tanda sisipan berarti Anda mendapatkan pegangan untuk jenis yang sedang dibuat.
https://web.archive.org/web/20150117095313/http://msdn.microsoft.com/en-us/library/te3ecsc8%28VS.80%29.aspx
sumber
Dalam C ++ / CLI itu berarti pointer dikelola. Anda dapat membaca lebih lanjut tentang ini (dan fitur C ++ / CLI lainnya) di sini:
http://en.wikipedia.org/wiki/C%2B%2B/CLI
sumber
Ini berarti bahwa itu adalah referensi ke objek yang dikelola.
sumber