Auto pada Jenis Persendirian
Menggunakan auto untuk mengisytiharkan pembolehubah boleh mengelirukan apabila berurusan dengan ahli kelas persendirian. Dalam contoh ini, kod berjaya disusun:
class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; auto b = f.Baz(); std::cout << b.i; }
Adakah kod ini sah? Jika ya, mengapa?
Kod itu memang sah. auto mengikut peraturan yang sama seperti potongan jenis templat. Sebab kedua-dua auto b = f.Baz(); dan menyeronokkan(f.Baz()); compile adalah kerana jenis Foo::Bar boleh digunakan, walaupun namanya peribadi.
Mengapa jenis itu boleh digunakan jika namanya peribadi?
The tidak boleh diakses jenis persendirian hanya meliputi nama mereka. Jenis itu sendiri masih boleh digunakan, menjadikannya mungkin untuk mengembalikannya kepada kod pelanggan dan menghantarnya ke fungsi templat.
Atas ialah kandungan terperinci Adakah Potongan Jenis Ahli Kelas Persendirian dengan `auto` Sah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!