İzleme Başvurusu İşleci (C++ Bileşen Uzantıları)
A Başvuru izleme (%) sıradan bir C++ başvurusu gibi davranır (&) bir nesne izleme başvurusu ne zaman atanan dışında nesnenin başvuru sayısı artırılır.
Tüm platformlar
İzleme başvurusu aşağıdaki özelliklere sahiptir.
Atama için izleme başvurusu bir nesnenin nesne başvuru sayısı 'er neden olur.
Yerel bir başvuru (&), başvuru sonucu ise bir *.İzleme başvurusu (%) başvuru, sonuç ise bir ^.Arasındaki tek fark & ve % olduğu yeri & "ham" başvurusu % olan başvuru sayılan başvuru.Bir nesneye bir % sahip olduğu sürece, nesne Canlı bellekte kalır.
Nokta (.) işleci üyesi access nesnesinin bir üyesi erişmek için kullanılır.
Yığın üzerinde izleme başvurusu bildirilebilir.İzleme başvurusu, bir sınıf üyesi olamaz.
Değer türleri ve tanıtıcılar için geçerli izleme başvuruları (örneğin String^).
İzleme başvurusu boş değer atanamaz veya nullptr değeri.İzleme başvurusu gerekli sayıda geçerli başka bir nesneye atanabilir.
İzleme başvurusu alma adresi tek işlem işleci kullanılamaz.
Windows Çalışma Zamanı
İzleme başvurusu, bir referans olarak sayılan standart C++ başvurusu gibi davranır.C++ başvurular hakkında daha fazla bilgi için bkz: Başvurular (C++).
Aşağıdaki örnek, izleme başvurusu için gösterdiği nesnenin içeriğini değiştirmek için nasıl kullanılacağını gösterir.
/ZW
using namespace Platform;
int main()
{
array<String^> ^arr = ref new array<String^>(10);
int i = 0;
for(int i = 0; i < 10; ++i){
String^& s = arr[i];
s = i++.ToString(); // changes the array content
}
}
Ortak Dil Çalışma Zamanı
clr türü atık olarak toplanmış öbek üzerindeki bir nesneye bağlamak için bir tanıtıcı izleme başvurusu kullanabilirsiniz.
clr değeri içinde başvurulan nesne Çöp toplayıcı taşır her izleme başvurusu değişkeni otomatik olarak güncelleştirilir.
Bir nesneyi yerel bir C++ başvuru atık toplanan yığında olmasını mümkün değildir.
c + başvuru izleme hakkında daha fazla bilgi için +/ CLI, bkz:
Nasıl yapılır: başvuruyla geçmesi CLR türleri ile başvuru izleme
Nasıl yapılır: izleme başvuruları ve değer türleri kullanmak
Nasıl yapılır: izleme başvuruları ve iç işaretçileri kullanmak
Nasıl yapılır: doğal ele şablon İşlevler, değer veya başvuru parametreleri yazma
Örnekler
Örnek
Aşağıdaki örnek, yerel ve yönetilen türleriyle izleme başvurusu kullanın gösterilmiştir.
// tracking_reference_1.cpp
// compile with: /clr
ref class MyClass {
public:
int i;
};
value struct MyStruct {
int k;
};
int main() {
MyClass ^ x = ref new MyClass;
MyClass ^% y = x; // tracking reference handle to reference object
int %ti = x->i; // tracking reference to member of reference type
int j = 0;
int %tj = j; // tracking reference to object on the stack
int * pi = new int[2];
int % ti2 = pi[0]; // tracking reference to object on native heap
int *% tpi = pi; // tracking reference to native pointer
MyStruct ^ x2 = ref new MyStruct;
MyStruct ^% y2 = x2; // tracking reference to value object
MyStruct z;
int %tk = z.k; // tracking reference to member of value type
delete[] pi;
}
Örnek
Aşağıdaki örnek, bir dizi izleme başvurusu bağlamak gösterilmiştir.
// tracking_reference_2.cpp
// compile with: /clr
using namespace System;
int main() {
array<int> ^ a = ref new array< Int32 >(5);
a[0] = 21;
Console::WriteLine(a[0]);
array<int> ^% arr = a;
arr[0] = 222;
Console::WriteLine(a[0]);
}
Çıktı