Sdílet prostřednictvím


Spravované výrazy v jazyce C++

Vyhodnocení výrazu spravované přijímá většina výrazů v Visual C++.Následující témata nabízejí konkrétní informace a diskutovat o některé typy výrazů, které nejsou podporovány:

  • Identifikátory a typy

  • Vyhodnocení funkce

  • Operátory

  • Přetížené operátory

  • Řetězce

  • Přetypování

  • Porovnání objektu a přiřazení

  • Operátory typeof a sizeof

  • Zabalení

  • Vyhodnocení vlastnosti

Vyhodnocení výraz ignoruje přístup kvalifikátory, public, protected, internal, a private.Je například možné volat metodu private z okna Kukátko.

Vyhodnocení výrazů provádí všechna vyhodnocení v implicitním nebezpečném kontextu, bez ohledu na to, zda je kód, který je prováděn, bezpečný nebo nebezpečný.

Ladicí program používá pravidla doplnit smysluplným způsobem zobrazit obsah datového typu.Pokud potřebujete, můžete přidat vlastní doplnit prvky pro zobrazení vlastní vlastní datové typy.Další informace naleznete v tématu Prvky zobrazení datového typu vlastní.

Identifikátory a typy

Výrazy ladicího programu můžou použít libovolný identifikátor viditelný v aktuálním rozsahu.Pokud je spuštěn ladicí program ve funkci magh, například, můžete použít libovolný identifikátor viditelné v magh, včetně funkce názvy, názvy proměnných a konstant.

Ladicí program lze správně zobrazit všechny proměnné primitive, enum, nebo intrinsic typu.Pro proměnné class typu, ladicí program správně zobrazí hodnotu v závislosti na typu odvozen nejvíce.Pokud je objekt leo typu lion, odvozeného od cat, je možné vyhodnotit leo.clawlength a získat správnou hodnotu pro objekt typu lion.

Libovolný výraz stranu levou stranu, který je hodnota l primitivní typ můžete přiřadit novou hodnotu.Přiřazení třídy a pole typy nejsou podporovány.

Vyhodnocení funkce

Ladicí program podporuje vyhodnocení funkce, včetně funkcí, přetížené.Proto můžete zadat jeden z těchto výrazů a ladicí program bude volat správná verze přetížené funkce:

kanga ()
kanga (roo)

Vyhodnocení funkce v ladicím programu skutečně volá a spustí kód pro tuto funkci.Pokud funkce má vedlejší účinky, například přidělování paměti nebo změnit hodnotu globální proměnné, vyhodnocení funkce v okně ladicí program změní stav aplikace, který může vést k neočekávaným výsledkům.

Pokud nastavíte zarážku na přetížené funkce, umístění zarážce závisí na jak zadat funkci.Pokud zadáte pouze název funkce, bude ladicí program nastavit jednu zarážku na každé přetížení tohoto názvu funkce.Pokud zadáte úplný podpis, název funkce a seznam full argument, ladicí program nastaví jednu zarážku na zadaný přetížení.

Operátory

Ladicí program správně vyhodnotí většinu vestavěných operátorů, včetně:

  • Relational operators: (expr1>expr2, expr1<expr2, expr1<= expr2, expr1 =>expr2, expr1 == expr2, expr1 != expr2).

  • Boolean operators: (expr1&&expr2, expr1 || expr2).

  • Podmínečný operátor: (expr1 ?expr2 : expr3) .

  • Aritmetické operátory: ( expr1 + expr2,expr1 - expr2,expr1 * expr2, expr1 / expr2, expr1 % expr2).

  • Bitwise operators: (expr1&expr2, expr1 ^ expr2,expr1 | expr2, expr1 ~ expr2).

  • Operátory posunutí.Examples: (expr1>>expr2, expr1<<expr2, expr1>>>expr2).

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

  • Unární operátory.Examples: ( +expr1, - expr1, expr1++, ++expr1, expr1--, --expr1 ).

Operátor čárky můžete použít řadu výrazů: expr1, expr2expr3.

Přetížené operátory

Většina přetížených operátorů v ladicím programu funguje.

Přetížené infixové operátory +, -, /, % a & fungují:

  • expr1 + expr2

  • expr1expr2

  • expr1 / expr2

  • expr1 % expr2

  • expr1 & expr2

Přetížené operátory zaváděcí =, &&, &, |, |, a ^ nefungují:

  • expr1 = expr2

  • expr1 && expr2

  • expr1 & expr2

  • expr1 || expr2

  • expr1 | expr2

  • expr1 ^ expr2

Přetížené relační operátory ==,! =, >, <, >=, a <= nefungují jazyka C++:

  • expr1 == expr2

  • expr1 != expr2

  • expr1 > expr2

  • expr1 < expr2

  • expr1 >= expr2

  • expr1 <= expr2

Přetížené operátory zaváděcí |, ^, <<, >>, >, <, >=, a <= nefungují:

  • expr1 | expr2

  • expr1 ^ expr2

  • expr1 << expr2

  • expr1 >> expr2

  • expr1 > expr2

  • expr1 < expr2

  • expr1 >= expr2

  • expr1 <= expr2

Přetížené prefixní operátory +, -, ++, --, !, a ~ fungují:

  • +expr1

  • -expr1

  • ++expr1

  • --expr1

  • !expr1

  • ~expr1

Přetížené sufixní operátory ++ a -- fungují:

  • expr1++

  • expr1--

Přetížení operátoru [] stavební práce:

  • x[expr2]

Vícerozměrná pole

Vyhodnocení výrazu C++ používá C#-style syntaxe vícedimenzionální pole.Příklad:

c[0,0]

Pomocí normální syntaxe C++ vygeneruje chybu:

c[0][0]Chyba: index 0' mimo mez pro ukazatel/pole "c"

Řetězce

Ladicí program rozpoznává indexovaný operátor při použití s řetězci stejně jako s poli.Takže například je možné zadat:

"hello world"[0]

Okno Kukátko zobrazí správné hodnoty:

'h'

Přetypování

Jednoduché výrazy přetypování fungují v ladicím programu:

(A)x

Nádech, které se týkají ukazatelů nebude fungovat v debuggeru:

Uživatelem definované nádech nefungují v ladicím programu pro Visual C++.

Porovnání objektu a přiřazení

Porovnání objektu a přiřazení v ladicím programu nefunguje u Visual C++.

Operátory typeof a sizeof

Ladicí program podporuje operátor typeof a sizeof transformace do ekvivalentní funkce rozhraní.NET Framework.

typeof ( expression)

je transformován do:

System.Type.GetType(expression )

Ladicí program poté vyhodnocuje transformovaný výraz.

Ladicí program není podporován sizeof operátor.

Zabalení a rozbalení

Vyhodnocení výrazu ladicí program nepodporuje zabalení a rozbalení v Visual C++.Další informace naleznete v tématu Zabalení a rozbalení.Pokud máte celočíselnou proměnnou i který byl převeden na objekt prostřednictvím zabalení, ladicí program vyhodnotí i jako celé číslo, ne jako objekt.Výsledky nemusí být očekávání.

Vyhodnocení vlastnosti

Ladicí program může vyhodnotit vlastnosti v jakémkoli okně proměnných.Vyhodnocení vlastnosti v debuggeru může mít vedlejší účinky, které produkovat neočekávané a nežádoucí výsledky.K ochraně před vedlejšími účinky způsobenými náhodným vyhodnocením, je možné vypnout vyhodnocení vlastností v dialogovém okně Možnosti.

Prvky WebMethod

Není možné volat prvky WebMethod z oken ladicího programu.

Viz také

Další zdroje

Výrazy v ladicím programu