Ev Kişisel Finans C ++ 'da kendi UDL'larınızı yaratmak - Cümlecik

C ++ 'da kendi UDL'larınızı yaratmak - Cümlecik

İçindekiler:

Video: Kendi Header (.h) dosyalarımızı C dilinde yazmak 2024

Video: Kendi Header (.h) dosyalarımızı C dilinde yazmak 2024
Anonim

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

'in bir parçası olarak doğru hesaplamayı gerçekleştirir. Özel bir UDL oluşturduğunuzda, derleyici dönüştürme için en büyük türünü kullanmaya zorlar. Bunun anlamı, kayan noktalı döngüler için uzun bir çift ve tamsayılı döngü için imzasız uzun uzun kullanmanız gerektiğidir. Daha sonra, daha küçük bir tür kullanmayı seçmiş olsanız bile, bu şekilde yapılır Örneğin, x öğesini bir çift olarak beyan ederek, literalin mümkün olan en geniş türü kullanması gerekir. Yeni türden bir UDL'yi bildirmek için, örnek, _circ soneki kullanan x oluşturur. ekrandaki sonuçtur. Bu örneği çalıştırdığınızda, burada gösterildiği gibi doğru değerin x'de yer aldığını görürsünüz:

Daire alanı: 78. 5398

Ö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.
C ++ 'da kendi UDL'larınızı yaratmak - Cümlecik

Editörün Seçimi

Kendi Excel 2007 Şablonlarınızı Oluşturun - mankenler

Kendi Excel 2007 Şablonlarınızı Oluşturun - mankenler

Hazır bir Excel 2007 şablonunu bulamazsanız faturaya uyuyor, oluşturduğunuz veya şirketinizin elinde bulunan örnek çalışma kitaplarından kendi şablonlarınızı oluşturuyor. Kendi şablonunuzu oluşturmanın en kolay yolu, gerçek bir çalışma kitabı prototipi oluşturmak ve dosyayı şablon dosyası biçimini kullanarak kaydedin ...

Kendi Excel 2010 Şablonlarınızı Oluşturma - mankenler

Kendi Excel 2010 Şablonlarınızı Oluşturma - mankenler

Hazır Excel 2010 şablonunu bulamazsanız faturaya uyuyor, oluşturduğunuz veya şirketinizin elinde bulunan örnek çalışma kitaplarından kendi şablonlarınızı oluşturuyor. Kendi şablonunuzu oluşturmanın en kolay yolu, gerçek bir çalışma kitabı prototipi oluşturmak ve dosyayı şablon dosyası biçimini kullanarak kaydedin ...

Excel 2007 Grafiğinin Tipini ve Stilini özelleştiren - aumluları

Excel 2007 Grafiğinin Tipini ve Stilini özelleştiren - aumluları

Bir grafik eklediğinizde bir Excel 2007 çalışma kitabı, Şeritte yeni bir Grafik Araçları Tasarım sekmesi görüntülenir. Grafik türünü ve stilini özelleştirmek için Grafik Araçları Tasarım sekmesindeki komut düğmelerini kullanabilirsiniz. Tasarım sekmesi aşağıdaki düğme gruplarını içerir: Tür grubu Değiştir Grafik Türü ...

Editörün Seçimi

ÜÇüncü Temel, Çalınma Evini ve Diğer Beyzbol Beyitlerini Çalın

ÜÇüncü Temel, Çalınma Evini ve Diğer Beyzbol Beyitlerini Çalın

ÜÇüncü temel çalmak genellikle ikinci çalmaktan daha kolaydır. Birçok atış çizmeden ilk önce olduğundan daha büyük bir yol alabilirsin. Zamanlamanız iyi ise, atıcı topu bırakmadan önce saniyelerden de çıkabilirsiniz. Sürahi genellikle koşucuları ikinci sıradan seçmek daha zor olur ...

Basketbol Takımınızda Bir Balo Domuzuyla

Basketbol Takımınızda Bir Balo Domuzuyla

Balo domuzu - asılı bir oyuncu uzun süreler boyunca topa vurur ve geçmek yerine her yere ateş etmeyi amaçlar - tüm takım için gerçek sorunlar yaratır. Örneğin, topu domuzu, takımın moralini zayıflatan ve öldüren puan almaya çalışan açık takım arkadaşlarını görmezden gelir ...

Editörün Seçimi

Canon EOS 6D'ye Yazar Adı Nasıl Eklenir Canon EOS 6D'ye Yazar Adı Nasıl Eklenir

Canon EOS 6D'ye Yazar Adı Nasıl Eklenir Canon EOS 6D'ye Yazar Adı Nasıl Eklenir

Adınızı aşağıdaki gibi ekleyebilirsiniz: Canon'la çektiğiniz her görüntünün yazarı. Bilgiler, çektiğiniz her resme EXIF ​​verisi olarak eklenir. Yazar bilgilerinizi kameraya kaydetmek için: Menü düğmesine basın. Daha önce kullanılan menü görüntülenir. Kamera Ayarları ... 4 ...

Rebel T6i / 750D'den Görüntülere Nasıl Temizleme Talimatları Ekleyeceksiniz - mankenler

Rebel T6i / 750D'den Görüntülere Nasıl Temizleme Talimatları Ekleyeceksiniz - mankenler

Küçük noktalar görüntülerinizde tutarlı bir şekilde görünüyorsa ve Rebel T6i / 750D'nin lensindeki kirin nedeni değilse - sensörünüzün temizlemeye ihtiyacı olabilir. Sensörü kendiniz temizlemeyin, çünkü ne yaptığınızı bilmiyorsanız makinenizi kolayca mahvedebilirsiniz. Bunun yerine, fotoğraf makinesini çekin ...