Rumah > pembangunan bahagian belakang > C++ > Bolehkah `auto` Menyimpulkan Jenis Peribadi dalam C?

Bolehkah `auto` Menyimpulkan Jenis Peribadi dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-19 20:51:12
asal
110 orang telah melayarinya

Can `auto` Deduce Private Types in C  ?

Menggunakan 'auto' pada Jenis Peribadi

Dalam C , nampaknya berlawanan dengan intuisi bahawa seseorang boleh menggunakan 'auto' dengan jenis peribadi, kerana ditunjukkan dalam kod berikut:

class Foo {
    struct Bar { int i; };
public:
    Bar Baz() { return Bar(); }
};
Salin selepas log masuk

Biasanya, adalah dijangkakan bahawa percubaan untuk mengakses peribadi taip 'Bar' terus (cth., Foo::Bar b = f.Baz();) akan mengakibatkan ralat. Walau bagaimanapun, ini tidak berlaku apabila menggunakan 'auto':

int main() {
    Foo f;
    auto b = f.Baz();         // ok
    std::cout << b.i;
}
Salin selepas log masuk

Tingkah laku ini timbul kerana persamaan antara peraturan 'auto' dan potongan jenis templat. Sama seperti cara jenis peribadi boleh dihantar ke fungsi templat:

template <typename T>
void fun(T t) {}

int main() {
    Foo f;
    fun(f.Baz());         // ok
}
Salin selepas log masuk

Keupayaan ini berpunca daripada fakta bahawa walaupun nama jenis peribadi mungkin tidak boleh diakses, jenis itu sendiri kekal boleh digunakan. Akibatnya, 'auto' dapat menyimpulkan jenis dengan betul dan menetapkannya kepada pembolehubah 'b', walaupun ia jenis peribadi.

Atas ialah kandungan terperinci Bolehkah `auto` Menyimpulkan Jenis Peribadi 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