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.