İçindekiler:
- Dönüşüm UDL'yi geliştirme
- Bunun için tekniğinin çalışması için türü yapılandırmak için gereken giriş sayısını kabul eden bir yapıcı oluşturmanız gerekir.Aslında en azından yapıcı bir türünü kabul etmeli veya kullanıcının sağladığı giriş değerini kaybetmelidir.
- (normal veya normal operasyondan farklı bir uygulama, uygulama daha kısa sürede ve daha verimli hale getirmek veya daha fazla esneklik sağlamak için) yaratmaktır. Harfi tanımlayarak gerçekleşen belirli bir işlem türü tanımlamak istiyorsunuz.
Video: Kendi Header (.h) dosyalarımızı C dilinde yazmak 2024
Standart Kitaplık, yerleşik özellikler C ++, size ilginç bir dizi literal sağlar. Bununla birlikte, kendi değerlerinizi yarattığınızda, gerçek değerlerin gerçek değeri daha belirgin hale gelir.
Kullanıcı Tanımlı Literaller'i (UDL'ler) kullanarak adresleyebileceğiniz birçok farklı gereksinim vardır, ancak üç genel gereksinim veri dönüşümlerini desteklemektedir; bu da özel türlerin daha kolay çalışılmasını ve normal kodlama problemleri olmadan istenen yan etkilerin elde edilmesini sağlar.
Yerleşik veya Standart Kütüphane harfleri hem önek hem de sonek şeklinde gelir, ancak yalnızca kendi harflerini tanımlarken son ek formunu oluşturabilirsiniz. Buna ek olarak, son ek alt çizgi ile başlamalıdır. Alt çizgi, varolan eklerle çakışmaları önlemeye ve diğer geliştiricilerin, harflerin özel (standart olmayan) bir form olduğunu bilmelerini sağlar.
Dönüşüm UDL'yi geliştirme
Dönüşümleri bir UDL içinde kapsüllemek mümkündür. Böyle bir UDL oluşturduğunuzda yapmanız gereken tek şey, istediğiniz sonucu elde etmek için sabiti tanımlarken uygun son ek sağlamaktır. CustomUDL01 örneği, yarıçap girdisini sabitteki bir dairenin alanına dönüştüren bir dönüştürmeyi tanımlamak için bir teknik gösterir.
#include ad alanı std kullanarak; constexpr long double operator "_circ (uzun çift yarıçaplı) {döndürme yarıçapı * yarıçapı * 3. 141592;} int main () {double x = 5. 0_circ; cout <<" daire alanı: << x << endl; return 0;}
Örnek, UDL'yi oluşturmak için uzun çiftli bir dönüş değeri ve uzun bir çiftli bir giriş değeri olan bir constexpr'e dayanır Bir daire alanının hesaplanması için denklem
Özel bir tür UDL geliştirme
Bir sürü kod karşılaşma, takip edilmesi ve anlaması zor özel türlere dayanır.Kodu basitleştirmek için bir UDL oluşturmak, olayların daha net olmasını sağlar ve hata potansiyelini azaltır. CustomUDL02 örneği, özel bir türü gösterir; operatör UDL'yi oluşturmak için kullanılır ve UDL'nin bir değişmez tanımlamak için nasıl kullanıldığını gösterir.
#include ad alanı std kullanarak; Yapı MyType {MyType (çift Giriş): Değer (Giriş) {} double Value;}; MyType operatörü "_mytype (long double Value) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Değer << endl; return 0;}
Bunun için tekniğinin çalışması için türü yapılandırmak için gereken giriş sayısını kabul eden bir yapıcı oluşturmanız gerekir.Aslında en azından yapıcı bir türünü kabul etmeli veya kullanıcının sağladığı giriş değerini kaybetmelidir.
Özel tür gereksinimi operatörün istediği gibi aynı boyutta veri türünü desteklemez, ancak aynı türde olmalılar Örneğin, uzun bir çifti bir int olarak geçemezsiniz.
Bu örneği çalıştırdığınızda, bir çıktı görürsünüz Özel türde girdiğiniz değer olan 145. 6 değeri.Bu yaklaşımı kullanarak oldukça karmaşık kurulumları işlemek mümkündür.Özel tipinizin kullanıcısı, takip etmek ve yorumlamak kolaydır net kod oluşturma yeteneği kazanır; altta yatan türleri karmaşıktır.
Yan etkiler için özel bir UDL kullanma
En ilginç ulardan biri ses, yan etkiler
(normal veya normal operasyondan farklı bir uygulama, uygulama daha kısa sürede ve daha verimli hale getirmek veya daha fazla esneklik sağlamak için) yaratmaktır. Harfi tanımlayarak gerçekleşen belirli bir işlem türü tanımlamak istiyorsunuz.
Elde ettiğiniz şey hala bir harf niteliğindedir, ancak daha sonra kullanmayı planladığınız bir değeri belirtmeyen bir harf. CustomUDL03 örneği, geleneksel olmayan kullanımlardan birini göstermektedir. #include ad alanı std kullanarak; void operator "_countdown (unsigned long long Value) {int () için {i_kountdown; return 0;} _countdown işlecinin normalde bir değerle ilişkilendirdiğiniz bir şeye bağlı olmadığını fark edin.Aslında bir değer döndürmez, bunun yerine bir yan etki yaratır.Bu örneği çalıştırdığınızda Bu çıktıya bakın.
10 9 8 7 6 5 4 3 2 1 0
Bununla birlikte, derleyici 10_countdown'u, döngünün her tekrarlanması için bir tane olmak üzere tek tek cout ifadeleri ile değiştirdi. 10'dan 0'a kadar değerleri çıktılar (ters sırada) 11 cout ifadeleri UDL yan etkisi, belirli tekrarlayan görevleri basitleştiren bir kod oluşturmanın her türlü ilginç olanaklarını açar.