Rumah > pembangunan bahagian belakang > C++ > Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Menjadi Agregat dalam C 14?

Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Menjadi Agregat dalam C 14?

Susan Sarandon
Lepaskan: 2024-11-29 03:50:13
asal
535 orang telah melayarinya

Can Classes with Non-Static Member Initializers Be Aggregates in C  14?

Permulaan Agregat C 11 untuk Kelas dengan Pemula Bukan Statik Ahli

Dalam C 11, struktur dan kelas dengan pembina dan peribadi yang ditentukan pengguna atau ahli data bukan statik yang dilindungi tidak dianggap sebagai agregat. Dari segi sejarah, ini juga berlaku untuk kelas dengan pemula ahli bukan statik, walaupun mereka tidak mempunyai pembina yang ditentukan pengguna.

Walau bagaimanapun, dalam C 14, sekatan ini telah dialih keluar. Kini, kelas dengan pemula ahli bukan statik masih boleh menjadi agregat, selagi ia memenuhi keperluan lain untuk agregat:

  • Tiada pembina yang ditentukan pengguna
  • Tiada peribadi atau bukan yang dilindungi -ahli data statik
  • Tiada kelas asas
  • Tiada maya fungsi

Contohnya:

struct A
{
  int a = 3;
  int b = 3;
};

int main()
{
  A a{0, 1}; // This is now allowed in C++14
  return 0;
}
Salin selepas log masuk

Perubahan ini didorong oleh keinginan untuk menyelaraskan tingkah laku permulaan agregat dengan gerak hati. Pemula dalam kelas pada asasnya adalah bersamaan dengan pembina yang ditentukan pengguna, tetapi adalah berlawanan dengan intuitif bagi mereka untuk menghalang kelas daripada menjadi agregat.

Sejak G 5.0, C 14 agregat dengan pemula ahli data bukan statik telah disokong menggunakan std=c 1y atau -std=c 14.

Atas ialah kandungan terperinci Bolehkah Kelas dengan Inisialisasi Ahli Bukan Statik Menjadi Agregat dalam C 14?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan