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
Instrukcje: deklarowanie typów wartości za pomocą słowa kluczowego interior_ptr (C++/CLI)
Instrukcje: funkcje przeładowania z wewnętrznymi i natywnymi wskaźnikami (C++/CLI)
Instrukcje: deklarowanie wewnętrznych wskaźników za pomocą słowa kluczowego const (C++/CLI)
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