Isi kandungan:
Video: So I spent 1,000+ Robux on Ninja Legends... (Pet Giveaway) 2024
Perpustakaan Standard, ditambah dengan ciri terbina dalam C ++, menyediakan anda dengan pelbagai literals yang menarik. Walau bagaimanapun, nilai sebenar literals menjadi lebih jelas apabila anda membuat sendiri.
Terdapat banyak keperluan yang berbeza yang boleh anda gunakan menggunakan Literal Ditetapkan Pengguna (UDL), tetapi tiga keperluan umum menyokong penukaran data, membuat jenis tersuai lebih mudah untuk digunakan, dan mendapatkan kesan sampingan yang diingini tanpa masalah pengkodan biasa.
Walaupun literasi terbina dalam atau Standard Perpustakaan datang dalam bentuk awalan dan akhiran, anda hanya boleh mencipta bentuk akhiran apabila menentukan literal anda sendiri. Di samping itu, akhiran mesti bermula dengan garis bawah. Garis bawah ini berfungsi untuk membantu mencegah konflik dengan akhiran yang ada dan untuk memastikan pemaju lain tahu bahawa literal adalah bentuk (tidak standard) tersuai.
Membangunkan penukaran UDL
Boleh merangkum penukaran dalam UDL. Apa yang anda perlu lakukan sebaik sahaja anda membuat UDL seperti itu menyediakan akhiran yang sesuai apabila menentukan pemalar untuk memperoleh hasil yang anda mahukan. Contoh CustomUDL01 menunjukkan teknik untuk menentukan penukaran yang mengubah input radius ke kawasan bulatan dalam pemalar.
# include menggunakan namespace std; integer panjang () {double x = 5. 0_circ; cout << "kawasan lingkaran adalah:" << x << endl; kembali 0;}
Untuk membuat UDL, contohnya bergantung kepada constexpr dengan nilai pulangan ganda yang panjang dan nilai input, jejari, dua kali ganda. Persamaan untuk mengira kawasan bulatan πr 2 Seperti yang anda lihat, contohnya melakukan pengiraan yang betul sebagai sebahagian daripada constexpr.
Setiap kali anda membuat UDL tersuai, memaksa anda untuk menggunakan jenis terbesar untuk penukaran. Ini bermakna bahawa anda perlu menggunakan dua kali ganda untuk literasi titik terapung dan tidak bertanda lama untuk literal literal. Sekalipun anda kemudian memilih untuk menggunakan jenis yang lebih kecil, seperti yang dilakukan dalam contoh dengan mengisytiharkan x sebagai dua kali ganda, literal itu sendiri mesti menggunakan jenis yang paling besar.
Untuk mengisytiharkan UDL jenis baru, contohnya membuat x, yang menggunakan akhiran _circ. s hasil pada skrin. Apabila anda menjalankan contoh ini, anda dapat melihat bahawa nilai yang betul telah diletakkan di x, seperti yang ditunjukkan di sini:
Kawasan bulatan adalah: 78. 5398
Membangunkan jenis UDL
tersuai yang banyak kod anda Pertemuan bergantung kepada jenis tersuai yang sukar untuk diikuti dan difahami.Mewujudkan UDL untuk memudahkan kod menjadikan perkara lebih jelas dan mengurangkan kemungkinan kesalahan. Contoh CustomUDL02 menunjukkan jenis tersuai, operator digunakan untuk membuat UDL, serta bagaimana UDL digunakan untuk menentukan literal.
# include menggunakan namespace std; struct MyType {MyType (double Input): Value (Input) {} double Value;}; MyType operator "return myType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Value << endl; return 0;}
Agar ini teknik untuk bekerja, anda mesti membuat pembina untuk jenis anda yang menerima bilangan input yang diperlukan untuk mengkonfigurasi jenisnya. Sekurang-kurangnya, pembina mesti menerima satu jenis atau nilai input yang diberikan pengguna yang hilang.
Jenis jenis keperluan tidak menyokong jenis data saiz yang sama seperti yang dikehendaki oleh pengendali, tetapi mereka mestilah jenis yang sama. Sebagai contoh, anda tidak boleh beralih dua kali ganda ke int
. Apabila anda menjalankan contoh ini, anda melihat output nilai 145. 6, yang merupakan nilai yang anda masukkan kepada jenis tersuai.Ini mungkin untuk mengendalikan persediaan yang agak kompleks dengan menggunakan pendekatan ini.Pengguna jenis tersuai anda memperoleh keupayaan untuk mencipta kod yang jelas yang mudah diikuti dan mentafsirkan, walaupun jenis asas adalah kompleks.
Menggunakan UDL tersuai untuk kesan sampingan
Salah satu yang paling menarik ses bagi UDLs adalah untuk membuat kesan sampingan (satu operasi selain daripada operasi biasa atau normal, sama ada untuk menjadikan aplikasi lebih pendek dan lebih cekap atau untuk memberikan kelenturan tambahan). Anda ingin menentukan jenis operasi tertentu yang berlaku akibat mendefinisikan literal.
Apa yang anda peroleh masih literal, tetapi harfiah yang tidak semestinya menunjukkan nilai yang anda rancang untuk digunakan kemudian. Contoh CustomUDL03 menunjukkan satu penggunaan bukan tradisional seperti itu.
# include menggunakan namespace std; void operator "_countdown (unsigned long long Value) {for (int i = Value; i> = 0; i--) cout << i << endl;} int main () {10_countdown; return 0;}
Perhatikan bahawa operator _countdown tidak melekat pada sesuatu yang anda biasanya mengaitkan dengan nilai Sebenarnya, ia tidak mengembalikan nilai sama sekali.Anda mendapat sebaliknya adalah kesan sampingan.Ketika anda menjalankan contoh ini, anda lihat output ini.
10 9 8 7 6 5 4 3 2 1 0
Apa yang telah terjadi adalah bahawa pengkompil telah menggantikan 10_countdown dengan pernyataan cout individu, satu untuk setiap lelaran gelung. 11 pernyataan cout yang mengeluarkan nilai-nilai antara 10 dan 0 (dalam urutan terbalik) Kesan sampingan UDL membuka pelbagai kemungkinan yang menarik untuk mewujudkan kod yang memudahkan tugas-tugas berulang dengan cara yang menjadikan penggunaannya jelas.