Saya bertanya-tanya mengapa cbegindan cenddiperkenalkan di C ++ 11? Apa kasus ketika memanggil metode-metode ini membuat perbedaan dari overloads konstanta begindan end?
Jadi mengapa tepatnya selalu disarankan untuk menggunakan const sesering mungkin? Sepertinya saya bahwa menggunakan const bisa lebih menyakitkan daripada bantuan dalam C ++. Tapi sekali lagi, saya datang pada ini dari perspektif python: jika Anda tidak ingin sesuatu diubah, jangan mengubahnya. Maka dengan itu, ada beberapa pertanyaan: Sepertinya setiap kali …
Saya telah membaca berkali-kali bahwa menegakkan const-correctness dalam kode C atau C ++ Anda tidak hanya praktik yang baik terkait dengan rawatan, tetapi juga memungkinkan compiler Anda untuk melakukan pengoptimalan. Namun, saya telah membaca kebalikannya - bahwa itu tidak mempengaruhi kinerja sama sekali. Oleh karena itu, apakah Anda memiliki contoh …
Misalkan saya memiliki tipe callable seperti: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Catatan yang mutable_callablememiliki non-const operator()yang memodifikasi variabel anggota ..... Sekarang anggaplah saya membuat std::functionkeluar dari tipeku: std::function<int()> foo = mutable_callable{}; Sekarang saya bisa melakukan ini: void invoke(std::function<int()> …
Saya punya pembungkus untuk beberapa kode warisan. class A{ L* impl_; // the legacy object has to be in the heap, could be also unique_ptr A(A const&) = delete; L* duplicate(){L* ret; legacy_duplicate(impl_, &L); return ret;} ... // proper resource management here }; Dalam kode lawas ini, fungsi yang "menduplikasi" …