interior_ptr (C++/CLI)

Vnitřní ukazatel deklaruje ukazatel uvnitř typu odkazu, ale ne na samotný objekt. Vnitřní ukazatel může odkazovat na popisovač odkazu, typ hodnoty, popisovač typu rámečku, člen spravovaného typu nebo na prvek spravovaného pole.

Všechny moduly runtime

(Pro tuto funkci jazyka neexistují žádné poznámky, které platí pro všechny moduly runtime.)

prostředí Windows Runtime

(Pro tuto funkci jazyka neexistují žádné poznámky, které platí pouze pro prostředí Windows Runtime.)

Požadavky

Možnost kompilátoru: /ZW

CLR (Common Language Runtime)

Následující příklad syntaxe ukazuje vnitřní ukazatel.

Syntaxe

cli::interior_ptr<cv_qualifier type> var = &initializer;

Parametry

cv_qualifier
const nebo volatile kvalifikátory.

type
Typ inicializátoru.

var
Název proměnné interior_ptr .

Inicializátor
Člen referenčního typu, prvku spravovaného pole nebo jakéhokoli jiného objektu, který můžete přiřadit nativnímu ukazateli.

Poznámky

Nativní ukazatel nemůže sledovat položku jako změny umístění ve spravované haldě, což vede k přesunu instancí objektu z uvolňování paměti. Aby ukazatel správně odkazoval na instanci, musí modul runtime aktualizovat ukazatel na nově umístěný objekt.

Interior_ptr představuje nadmnožinu funkcí nativního ukazatele. Proto lze k interior_ptr přiřadit také cokoli, co lze přiřadit nativnímu ukazateli. Vnitřní ukazatel může provádět stejnou sadu operací jako nativní ukazatele, včetně porovnání a aritmetiky ukazatele.

Vnitřní ukazatel lze deklarovat pouze v zásobníku. Vnitřní ukazatel nelze deklarovat jako člen třídy.

Vzhledem k tomu, že vnitřní ukazatele existují pouze na zásobníku, pořízení adresy vnitřního ukazatele poskytuje nespravovaný ukazatel.

interior_ptr má implicitní převod na bool, který umožňuje jeho použití v podmíněných příkazech.

Informace o tom, jak deklarovat vnitřní ukazatel, který odkazuje na objekt, který nelze přesunout na haldu shromážděnou z paměti, naleznete v pin_ptr.

interior_ptr je v oboru názvů rozhraní příkazového řádku. Další informace najdete v tématu Obory názvů platformy, výchozího nastavení a rozhraní příkazového řádku.

Další informace o vnitřních ukazatelích najdete v tématu

Požadavky

Možnost kompilátoru: /clr

Příklady

Následující ukázka ukazuje, jak deklarovat a používat vnitřní ukazatel na typ odkazu.

// interior_ptr.cpp
// compile with: /clr
using namespace System;

ref class MyClass {
public:
   int data;
};

int main() {
   MyClass ^ h_MyClass = gcnew MyClass;
   h_MyClass->data = 1;
   Console::WriteLine(h_MyClass->data);

   interior_ptr<int> p = &(h_MyClass->data);
   *p = 2;
   Console::WriteLine(h_MyClass->data);

   // alternatively
   interior_ptr<MyClass ^> p2 = &h_MyClass;
   (*p2)->data = 3;
   Console::WriteLine((*p2)->data);
}
1
2
3

Viz také

Přípony komponent pro .NET a UPW