Bagikan melalui


vtordisp pragma

Mengontrol penambahan anggota perpindahan konstruksi/penghancuran tersembunyi vtordisp . adalah vtordisppragma 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, , 1atau 2, yang sesuai dengan /vd0opsi , /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

vtordisppragma 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 vtordisppragma tata letak kelas yang mengikutinya. Opsi /vd0kompilator , /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

Arahan Pragma dan __pragma _Pragma kata kunci