Soru C ++ 'daki “^” sembolü nedir?


Kayanın altında uyurken C ++ dil özelliklerine yeni bir sembol eklendi mi?

Sadece şu soruyla karşılaştım:

Sadece 10 haneli numarayı kabul etmek için Metin Kutusu'nu kısıtla

Bu da '^' sembolünün bir şekilde C ++ 'nın bir parçası olduğunu (bitwise-XOR'un eski anlamında değil) gösterir.

Bu böyle mi?

Eğer öyleyse, bu ne anlama geliyor? (Denedim google soru ama Google tatmin edici cevaplarla gelmedi)


25
2017-09-01 20:19


Menşei


Eğer hoşuna giderse ^, onlar da değiştirildiğini seveceksiniz & ile % yönetilen türlere başvurular için. Sadece vidalamaya karar vermişler gibi, yeni operatörleri icat edelim ve hala "C ++" dilini çağırın. - Ken Simon
@Ken Simon: C ++ ne zamandan beri yönetiliyor? C # türleri yönetildi, ancak standart C ++. - Thomas Matthews
@Ken: C ++ olarak adlandırılan dil, C ++ / CLI olarak adlandırılır. Bu nedenle çağrılan nedenlerden biri, C ++ / CLI'nin tam bir alt kümesidir (yani herhangi bir uyumlu C ++ programı aynı zamanda bir C ++ / CLI programıdır). - Pavel Minaev


Cevaplar:


C ++ 'da “^” sembolü bitsel münhasır veya (xor) operatördür. Tek bir bit için var 0 ^ 0 = 1 ^ 1 = 0 ve 0 ^ 1 = 1 ^ 0 = 1.

Bununla birlikte, söz konusu soru, C ++ / CLI olarak bilinen .NET platformunda C ++ geliştirme için Microsoft özel sözdiziminin bir parçasıdır veya Sadece çalışır.

NET'teki bellek toplanan çöp topluluğudur ve nesnelerin referansları izlenmelidir. Bu, bu nesneleri normal bir C ++ işaretçisi kullanarak göndermeyi imkansız kılar. Microsoft, yönetilen yığındaki bir nesneyi referans gösterebilen bir işaretçiye benzer bir değişken bildirmek için “^” sembolünü yeniden kullanmaya karar vermiştir.

^ (Yönetilen Öbek Üzerinde Nesne Tut)


34
2017-09-01 20:20





Visual C ++’da ^ yönetilen bir nesneye yönelik bir tanıtımı temsil eder. Esas olarak, C # 'da bir referans olurdu. Onları tahsis et gcnew yerine newve onlar senin için toplanmış olacaklar. Visual C ++, CLI ile nasıl etkileşir.


14
2017-09-01 20:24





Başvurulan yanıtta, standart C ++ dilinin bir parçası değil, Microsoft'un .NET birlikte çalışması için bir araya getirdiği C ++ / CLI dilinin bir parçası. Bu dilde, ^ "yönetilen belleğe işaretçi" anlamına gelir.


10
2017-09-01 20:22





'^' Sözdizimi bir izleme referansı içinde C ++ / CLI, C ++ için yönetilen kodla etkileşime izin veren bir Microsoft uzantısı.


4
2017-09-01 20:24



Hayır değil. % bir izleme referansıdır. ^ bir izleme tanıtıcısıdır. (Bağlandığınız sayfayı okuyun.) - Ben Voigt


Standart C ++'nin bir parçası değil. Bu Yönetilen C ++ (Microsoft'un dili, .NET için C ++ gibi çok) parçasıdır. Aynı şekilde "---- 'ye bir referans" anlamına gelir, "*" ifadesi "----- işaretçisi" Standart C ++' dır.


1
2017-09-01 20:23



Bu, bitly XOR operatörü olduğu standart C ++'nin bir parçasıdır. - You
Evet, ve "*" de "çoğalacak" anlamına geliyor, ama burada konuştuğumuz şey bu değil. - James Curran
Çift no. ^ bir takip kolu to ---- Referans C ++ 'da başka bir şey demektir, ve %standart C ++ referansına yönetilen eşdeğerdir &. Ve bu C ++ / CLI. "C ++ için Yönetilen Uzantılar" geçersiz kılındığında, şöyle yazılmıştır: __gc * çöp toplayıcı uyumlu işaretçi anlamı. - Ben Voigt