interior_ptr (C++/CLI)

Wskaźnik wewnętrzny deklaruje wskaźnik wewnątrz typu odwołania, ale nie do samego obiektu. Wskaźnik wewnętrzny może wskazywać uchwyt odwołania, typ wartości, uchwyt typu pola, element członkowski typu zarządzanego lub element tablicy zarządzanej.

Wszystkie środowiska wykonawcze

(Nie ma żadnych uwag dotyczących tej funkcji językowej, która ma zastosowanie do wszystkich środowisk uruchomieniowych).

Środowisko wykonawcze systemu Windows

(Nie ma żadnych uwag dotyczących tej funkcji językowej, które mają zastosowanie tylko do środowisko wykonawcze systemu Windows).

Wymagania

Opcja kompilatora: /ZW

środowiska uruchomieniowe w trakcie wykonania

W poniższym przykładzie składni pokazano wskaźnik wewnętrzny.

Składnia

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

Parametry

cv_qualifier
const lub volatile kwalifikatory.

type
Typ inicjatora.

var
Nazwa zmiennej interior_ptr .

Inicjatora
Element członkowski typu odwołania, element tablicy zarządzanej lub dowolny inny obiekt, który można przypisać do natywnego wskaźnika.

Uwagi

Natywny wskaźnik nie może śledzić elementu, ponieważ jego lokalizacja zmienia się na zarządzanym stercie, co wynika z przenoszenia wystąpień obiektu przez moduł odśmiecenia pamięci. Aby wskaźnik poprawnie odwołył się do wystąpienia, środowisko uruchomieniowe musi zaktualizować wskaźnik do nowo umieszczonego obiektu.

Interior_ptr reprezentuje nadzbiór funkcji natywnego wskaźnika. W związku z tym wszystkie elementy, które można przypisać do natywnego wskaźnika, można również przypisać do interior_ptr. Wskaźnik wewnętrzny może wykonywać ten sam zestaw operacji co wskaźniki natywne, w tym arytmetyka porównania i wskaźnika.

Wskaźnik wewnętrzny można zadeklarować tylko na stosie. Wskaźnik wewnętrzny nie może być zadeklarowany jako element członkowski klasy.

Ponieważ wskaźniki wewnętrzne istnieją tylko na stosie, biorąc adres wskaźnika wewnętrznego daje niezarządzany wskaźnik.

interior_ptr ma niejawną konwersję na bool, która umożliwia jej użycie w instrukcjach warunkowych.

Aby uzyskać informacje na temat deklarowania wewnętrznego wskaźnika wskazującego na obiekt, którego nie można przenieść na stertę zbieraną przez śmieci, zobacz pin_ptr.

interior_ptr znajduje się w przestrzeni nazw interfejsu wiersza polecenia. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw platformy, domyślne i interfejsu wiersza polecenia.

Aby uzyskać więcej informacji na temat wskaźników wewnętrznych, zobacz

Wymagania

Opcja kompilatora: /clr

Przykłady

W poniższym przykładzie pokazano, jak zadeklarować i użyć wskaźnika wewnętrznego do typu odwołania.

// 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

Zobacz też

Rozszerzenia składników dla platformy .NET i platformy uniwersalnej systemu Windows