Cara: Mendeklarasikan Jenis Nilai dengan Kata Kunci interior_ptr (C++/CLI)
Interior_ptr dapat digunakan dengan jenis nilai.
Penting
Fitur bahasa ini didukung oleh /clr
opsi pengkompilasi, tetapi tidak oleh /ZW
opsi pengkompilasi.
Contoh: interior_ptr dengan jenis nilai
Deskripsi
Sampel C++/CLI berikut menunjukkan cara menggunakan interior_ptr dengan jenis nilai.
Kode
// interior_ptr_value_types.cpp
// compile with: /clr
value struct V {
V(int i) : data(i){}
int data;
};
int main() {
V v(1);
System::Console::WriteLine(v.data);
// pointing to a value type
interior_ptr<V> pv = &v;
pv->data = 2;
System::Console::WriteLine(v.data);
System::Console::WriteLine(pv->data);
// pointing into a value type
interior_ptr<int> pi = &v.data;
*pi = 3;
System::Console::WriteLine(*pi);
System::Console::WriteLine(v.data);
System::Console::WriteLine(pv->data);
}
1
2
2
3
3
3
Contoh: this
penunjuk
Deskripsi
Dalam jenis nilai, penunjuk this
mengevaluasi ke interior_ptr.
Dalam isi fungsi anggota non-statis dari jenis V
nilai , this
adalah ekspresi jenis interior_ptr<V>
yang nilainya adalah alamat objek yang fungsinya dipanggil.
Kode
// interior_ptr_value_types_this.cpp
// compile with: /clr /LD
value struct V {
int data;
void f() {
interior_ptr<V> pv1 = this;
// V* pv2 = this; error
}
};
Contoh: alamat operator
Deskripsi
Contoh berikut menunjukkan cara menggunakan alamat operator dengan anggota statis.
Alamat anggota tipe Visual C++ statis menghasilkan pointer asli. Alamat anggota jenis nilai statis adalah penunjuk terkelola karena anggota jenis nilai dialokasikan pada tumpukan runtime dan dapat dipindahkan oleh pengumpul sampah.
Kode
// interior_ptr_value_static.cpp
// compile with: /clr
using namespace System;
value struct V { int i; };
ref struct G {
static V v = {22};
static int i = 23;
static String^ pS = "hello";
};
int main() {
interior_ptr<int> p1 = &G::v.i;
Console::WriteLine(*p1);
interior_ptr<int> p2 = &G::i;
Console::WriteLine(*p2);
interior_ptr<String^> p3 = &G::pS;
Console::WriteLine(*p3);
}
22
23
hello
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk