Rumah > pembangunan bahagian belakang > C++ > Adakah Potongan Jenis Ahli Kelas Persendirian dengan `auto` Sah dalam C ?

Adakah Potongan Jenis Ahli Kelas Persendirian dengan `auto` Sah dalam C ?

Patricia Arquette
Lepaskan: 2024-12-16 01:48:14
asal
998 orang telah melayarinya

Is Private Class Member Type Deduction with `auto` Valid in C  ?

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;
}
Salin selepas log masuk

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!

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