Udostępnij za pośrednictwem


Zarządzane wyrażenia w języku C++

Oceniający zarządzanych wyrażenia akceptuje większość wyrażeń w Visual C++.Poniższe tematy oferują określonych informacji i omówić niektóre typy wyrażenie, które nie są obsługiwane:

  • Identyfikatory i typów

  • Ocena funkcji

  • Operatory

  • Przeciążone operatory

  • Ciągi znaków

  • Poświaty

  • Porównanie obiektów i przypisania

  • Operatory typeof i sizeof

  • Boksie

  • Ocena właściwości

Oceniający wyrażenie ignoruje kwalifikatory dostępu public, protected, internal, i private.Można wywołać private metodę z Watch okna, na przykład.

Oceniający wyrażenie wykonuje wszystkie oceny w niejawnego kontekstu niebezpieczne, czy kod wykonywany jest bezpieczny lub niebezpieczny.

Debuger wykorzystuje zasady autoexpand wyświetlanie zawartości typu danych w formie znaczące.Jeśli trzeba, można dodać niestandardowe autoexpand elementy do wyświetlenia własne niestandardowe typy danych.Aby uzyskać więcej informacji, zobacz Wyświetlanie elementów niestandardowy typ danych.

Identyfikatory i typów

Wszelkie widoczne identyfikatora można użyć, debuger wyrażeń w bieżącym zakresie.Jeśli debuger jest zatrzymywane w funkcji magh, na przykład, można użyć jakichkolwiek widocznych w ramach identyfikator magh, w tym stałe, nazwy zmiennych i nazwy funkcji.

Debuger może poprawnie wyświetlać dowolnych zmiennych primitive, enum, lub intrinsic typu.W przypadku zmiennych class typu, debuger poprawnie Wyświetla wartość, na podstawie typu większości uzyskane.Jeśli obiekt leo typu lion, z typu pochodnego cat, można ocenić leo.clawlength i uzyskać prawidłową wartość dla obiektu typu lion.

Można przypisać nowej wartości do dowolnego wyrażenia lewego nadwozia1 side, którego wartość l typ pierwotny.Przydziały do klasy a tablicą typów nie są obsługiwane.

Ocena funkcji

Debuger obsługuje oceny funkcji, w tym funkcji zastąpionej.W związku z tym można wprowadzić jedną z następujących wyrażeń i debuger będzie wywoływać poprawną wersję funkcji zastąpionej:

kanga ()
kanga (roo)

Faktycznie funkcji w oknie debuger wywołuje i wykonuje kod dla tej funkcji.Jeśli funkcja ma efekty uboczne, takich jak przydzielanie pamięci lub zmiany wartości zmiennej globalnej, funkcji w oknie Debuger zmieni stan programu, który może dać nieoczekiwane wyniki.

Po ustawieniu punkt przerwania na funkcji zastąpionej lokalizacji punkt przerwania zależy sposób określania funkcji.Określa się tylko nazwę funkcji, debuger określi jeden punkt przerwania na każdy przeciążenie nazwę tej funkcji.Jeśli określisz pełną podpisu, nazwa funkcji i argument pełnej listy, debuger ustawia jeden punkt przerwania na przeciążenie określony.

Operatory

Debuger poprawnie wynikiem najbardziej wbudowanych operatorów, w tym:

  • Operatory relacyjne: (Wyr1 >Wyr2, Wyr1 < expr2, expr1 <= expr2, expr1 => expr2, expr1 == expr2, expr1 != expr2).

  • Operatory logiczne: (Wyr1 & & expr2, expr1 || expr2).

  • Operator warunkowy: (Wyr1 ?expr2 : expr3) .

  • Operatorów arytmetycznych: ( Wyr1 + Wyr2, Wyr1 - expr2,expr1 * expr2, expr1 / expr2, expr1 % expr2).

  • Bitowe operatory: (Wyr1 & expr2, expr1 ^ expr2, expr1 | expr2, expr1 ~ expr2).

  • Operatorzy SHIFT.Przykłady: (Wyr1 >>Wyr2, Wyr1 <<Wyr2, Wyr1 >>> Wyr2).

  • Assignment operators: ( lvalue = expr2, lvalue *= expr2, lvalue /= expr2, lvalue %= expr2, lvalue += expr2, lvalue -= expr2, lvalue <<= expr2, lvalue >>=expr2, lvalue &= expr2, lvalue ^= expr2, lvalue |= expr2 ).

  • Operatory jednoargumentowe.Examples: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1 ).

Można użyć operatora przecinek, aby zdefiniować serię wyrażeń: Wyr1, wyrażenie2,expr3.

Przeciążone operatory

Najbardziej przeciążone operatory pracy w debugerze.

Przeciążone operatory infiks +, -, /, %, a & czas pracy:

  • Wyr1 + Wyr2

  • Wyr1Wyr2

  • Wyr1 / Wyr2

  • Wyr1 % Wyr2

  • Wyr1 & Wyr2

Przeciążone operatory infiks =, & & & ||, |, i ^ nie działają:

  • Wyr1 = Wyr2

  • Wyr1 & & Wyr2

  • Wyr1 & Wyr2

  • Wyr1 || Wyr2

  • Wyr1 | Wyr2

  • Wyr1 ^ Wyr2

Przeciążone operatory relacyjne ==,! =, >, <>, =, a < = nie działają w przypadku C++:

  • Wyr1 == Wyr2

  • Wyr1 ! = Wyr2

  • Wyr1 > Wyr2

  • Wyr1 < Wyr2

  • Wyr1 > = Wyr2

  • Wyr1 < = Wyr2

Przeciążone operatory infiks |, ^, <>,, >, <>, =, a < = nie działają:

  • Wyr1 | Wyr2

  • Wyr1 ^ Wyr2

  • Wyr1 << Wyr2

  • Wyr1 >> Wyr2

  • Wyr1 > Wyr2

  • Wyr1 < Wyr2

  • Wyr1 > = Wyr2

  • Wyr1 < = Wyr2

Przeciążone operatory przedrostkowe +, -, ++,--,!, i ~ pracy:

  • +Wyr1

  • -Wyr1

  • ++expr1

  • --expr1

  • !Wyr1

  • ~Wyr1

Przeciążone operatory sufiks ++ i--pracy:

  • Wyr1++

  • Wyr1--

Przeciążenie operatora [] works:

  • xexpr2

Tablice wielowymiarowe

Oceniający wyrażenie C++ używa języka C#-styl składnia dla tablic wielowymiarowych.Na przykład:

c[0,0]

Przy użyciu normalnego składni języka C++ generuje błąd:

c[0][0]Błąd: Indeks '0' z granicą wskaźnik/tablicy 'c'

Ciągi znaków

Debuger rozpoznaje indeksowanych operator używanego z ciągów znaków, jak również tablic.Tak na przykład, można wprowadzić:

"hello world"[0]

Watch w oknie zostaną wyświetlone prawidłowe wartości:

'h'

Poświaty

Praca oddanych prostych wyrażeń w debugerze:

(A)x

Poświaty, które obejmują wskaźniki nie będzie działać w debugerze:

Poświaty zdefiniowane przez użytkownika nie działają w debugerze dla Visual C++.

Porównanie obiektów i przypisania

Porównanie obiektów i przypisania w oknie Debuger nie działa dla Visual C++.

Operatory typeof i sizeof

Debuger obsługuje operator typeof i sizeof przekształcania równoważny.NET Framework funkcji.

typeof ( wyrażenie)

jest przekształcany w:

System.Type.GetType(expression )

Debuger następnie oblicza wyrażenie to przekształcone.

Debuger nie obsługuje sizeof operatora.

Boks i pakowania, rozpakowywania

Oceniający wyrażenie debuger nie obsługuje boks i pakowania, rozpakowywania w Visual C++.Aby uzyskać więcej informacji, zobacz boksie i Unboxing.Jeśli zmienna integer i , został przekonwertowany na obiekt poprzez boksie, oceni debugera i jako liczbę całkowitą, a nie jako obiekt.Wyniki mogą nie być oczekiwań.

Ocena właściwości

Debuger może służyć do właściwości w dowolnym oknie zmiennej.Jednak oceny właściwości w oknie Debuger może mieć skutki uboczne, które produkują nieprzewidziane i niepożądane wyniki.Do ochrony przed spowodowanych przypadkowym oceny skutków ubocznych, można wyłączyć oceny właściwości Opcje okno dialogowe.

Elementów WebMethod

Nie można wywoływać elementów WebMethod z debugger systemu windows.

Zobacz też

Inne zasoby

Wyrażenia w debugerze