Что такое символ «^» в C ++? - PullRequest
27 голосов
/ 02 сентября 2010

Присоединился ли новый символ к спецификации языка C ++, когда я спал под камнем?

Я только что столкнулся со следующим вопросом:

Ограничить текстовое поле, чтобы принимать только 10 цифрчисло

Что говорит о том, что символ '^' каким-то образом является частью C ++ (не в традиционном значении побитового XOR)

Это так?

Если так, что это значит?(Я пытался погуглить вопрос , но Google не нашел удовлетворительных ответов)

Ответы [ 5 ]

35 голосов
/ 02 сентября 2010

В C ++ символ «^» является побитовым исключающим или (xor) оператором.Для одного бита у вас есть 0 ^ 0 = 1 ^ 1 = 0 и 0 ^ 1 = 1 ^ 0 = 1.

. Однако вопрос, на который вы ссылаетесь, является частью специального синтаксиса Microsoft для разработки C ++ на платформе .NET, известной как C ++ / CLI или Это просто работает .

Память в .NET является сборщиком мусора, и ссылки на объекты придется отслеживать.Это делает невозможным обращение к этим объектам с помощью обычного указателя C ++.Microsoft решила повторно использовать символ «^», чтобы объявить переменную, похожую на указатель, который может ссылаться на объект в управляемой куче.

^ (Дескриптор объекта в управляемой куче)

15 голосов
/ 02 сентября 2010

В Visual C ++ ^ представляет дескриптор управляемого объекта.По сути, то, что в C # будет ссылкой.Выделите их с gcnew вместо new, и они будут для вас собраны.Вот как Visual C ++ взаимодействует с CLI.

11 голосов
/ 02 сентября 2010

В указанном ответе это не часть стандартного языка C ++, это часть языка C ++ / CLI, который Microsoft создала для взаимодействия .NET.На этом языке ^ означает «указатель на управляемую память».

4 голосов
/ 02 сентября 2010

Синтаксис '^' ссылается на ссылку отслеживания в C ++ / CLI , расширение Microsoft до C ++, которое обеспечивает взаимодействие с управляемым кодом.

1 голос
/ 02 сентября 2010

Это не является частью стандарта C ++. Это часть Managed C ++ (язык Microsoft очень похож на C ++ для .NET). Это означает «ссылка на ----» во многом таким же образом, что «*» означает «Указатель на -----» является стандартным C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...