vtordisp
pragma
Mengontrol penambahan anggota perpindahan konstruksi/penghancuran tersembunyi vtordisp
. adalah vtordisp
pragma C++-spesifik.
Sintaks
#pragma vtordisp(
[push,
] n)
#pragma vtordisp(pop)
#pragma vtordisp()
#pragma vtordisp(
[push,
] {on
|off
})
Parameter
push
Mendorong pengaturan saat ini vtordisp
pada tumpukan kompilator internal, dan mengatur pengaturan baru vtordisp
ke n. Jika n tidak ditentukan, pengaturan saat ini vtordisp
tidak berubah.
pop
Menghapus rekaman teratas dari tumpukan pengkompilasi internal, dan memulihkan vtordisp
pengaturan ke nilai yang dihapus.
n
Menentukan nilai baru untuk vtordisp
pengaturan. Nilai yang mungkin adalah 0
, , 1
atau 2
, yang sesuai dengan /vd0
opsi , /vd1
, dan /vd2
pengkompilasi. Untuk informasi selengkapnya, lihat /vd
(Menonaktifkan Perpindahan Konstruksi).
on
Setara dengan #pragma vtordisp(1)
.
off
Setara dengan #pragma vtordisp(0)
.
Keterangan
vtordisp
pragma hanya berlaku untuk kode yang menggunakan basis virtual. Jika kelas turunan mengambil alih fungsi virtual yang diwarisinya dari kelas dasar virtual, dan jika konstruktor atau destruktor untuk panggilan kelas turunan yang berfungsi menggunakan penunjuk ke kelas dasar virtual, pengompilasi mungkin memperkenalkan bidang tersembunyi vtordisp
ekstra ke dalam kelas dengan basis virtual.
mempengaruhi vtordisp
pragma tata letak kelas yang mengikutinya. Opsi /vd0
kompilator , /vd1
, dan /vd2
menentukan perilaku yang sama untuk modul lengkap. 0
Menentukan atau off
menekan anggota tersembunyivtordisp
. Matikan vtordisp
hanya jika tidak ada kemungkinan bahwa konstruktor dan destruktor kelas memanggil fungsi virtual pada objek yang ditunjukkan oleh this
pointer.
1
Menentukan atau on
, default, memungkinkan anggota tersembunyi vtordisp
di mana mereka diperlukan.
Menentukan 2
memungkinkan anggota tersembunyi vtordisp
untuk semua basis virtual dengan fungsi virtual. #pragma vtordisp(2)
mungkin diperlukan untuk memastikan performa yang benar pada dynamic_cast
objek yang dibangun sebagian. Untuk informasi selengkapnya, lihat Compiler Warning (level 1) C4436.
#pragma vtordisp()
, tanpa argumen, memulihkan vtordisp
pengaturan ke pengaturan awalnya.
#pragma vtordisp(push, 2)
class GetReal : virtual public VBase { ... };
#pragma vtordisp(pop)
Lihat 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