Casa Finanza personale Creazione di propri UDL in C ++ - dummies

Creazione di propri UDL in C ++ - dummies

Sommario:

Video: What caused the French Revolution? - Tom Mullaney 2025

Video: What caused the French Revolution? - Tom Mullaney 2025
Anonim

La libreria standard, insieme alle funzionalità incorporate di C ++, fornisci un'interessante serie di letterali. Tuttavia, il vero valore dei letterali diventa più evidente quando crei il tuo.

Esistono molte esigenze diverse che è possibile affrontare utilizzando gli User-Defined Literals (UDL), ma tre esigenze comuni sono supportare le conversioni di dati, semplificando il lavoro sui tipi personalizzati e ottenendo gli effetti collaterali desiderati senza il solito numero di problemi di codifica.

Sebbene i letterali della libreria standard o incorporati siano disponibili sia in forma di prefisso che di suffisso, è possibile creare il suffisso solo quando si definiscono i propri valori letterali. Inoltre, il suffisso deve iniziare con un carattere di sottolineatura. Il carattere di sottolineatura serve a prevenire conflitti con suffissi esistenti e ad assicurare che altri sviluppatori sappiano che il letterale è un modulo personalizzato (non standard).

Sviluppo di una conversione UDL

È possibile incapsulare le conversioni all'interno di un UDL. Tutto ciò che devi fare una volta creato tale UDL è fornire il suffisso appropriato quando si definisce la costante per ottenere il risultato desiderato. L'esempio CustomUDL01 dimostra una tecnica per definire una conversione che modifica l'input del raggio sull'area di un cerchio nella costante.

# include usando lo spazio dei nomi std; constexpr long double operator "_circ (raggio doppio lungo) {raggio di ritorno * raggio * 3. 141592;} int main () {doppio x = 5. 0_circ; cout <<" l'area del cerchio è: "<< x << endl; return 0;}

Per creare l'UDL, l'esempio si basa su un constexpr con un valore di ritorno di un doppio lungo e un valore di input, raggio, di un doppio lungo.L'equazione per calcolare l'area di un cerchio è πr 2 . Come puoi vedere, l'esempio esegue il calcolo corretto come parte del constexpr.

Ogni volta che crei un UDL personalizzato, il compilatore ti obbliga a usare il tipo più grande per la conversione.Questo significa che devi usare un doppio lungo per i letterali in virgola mobile e per i caratteri letterali interi senza segno lungo lungo. Anche se successivamente scegli di utilizzare un tipo più piccolo, come in questo esempio dichiarando x come un doppio, il letterale stesso deve impiegare il tipo più grande possibile.

Per dichiarare un UDL del nuovo tipo, l'esempio crea x, che usa il suffisso _circ. s il risultato sullo schermo. Quando si esegue questo esempio, si vede che il valore corretto è stato inserito in x, come mostrato qui:

L'area del cerchio è: 78. 5398

Sviluppo di un UDL di tipo personalizzato

Molto del codice che si l'incontro si basa su tipi personalizzati che sono difficili da seguire e capire.La creazione di un UDL per semplificare il codice rende le cose più chiare e riduce il rischio di errori. L'esempio CustomUDL02 mostra un tipo personalizzato, l'operatore utilizzato per creare l'UDL e il modo in cui l'UDL viene utilizzato per definire un valore letterale.

# include usando lo spazio dei nomi std; struct MyType {MyType (double Input): Value (Input) {} double Value;}; MyType operator" _mytype (long double Valore) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType Valore << endl;. Return 0;}

Affinché questo tecnica per funzionare, è necessario creare un costruttore per il tipo che accetta il numero di input richiesti per configurare il tipo. Almeno il costruttore deve accettare un tipo o il valore di input che l'utente fornisce è perso.

Il tipo personalizzato necessita non supporta lo stesso tipo di dati di dimensione richiesto dall'operatore, ma devono essere dello stesso tipo. Ad esempio, non è possibile passare un doppio lungo a un int.

Quando si esegue questo esempio, viene visualizzato un output valore di 145. 6, che è il valore immesso nel tipo personalizzato.È possibile gestire configurazioni abbastanza complesse usando questo approccio.L'utente del tipo personalizzato ottiene la capacità di creare codice chiaro che è facile da seguire e interpretare, anche quando i tipi sottostanti sono complessi.

Uso di un UDL personalizzato per effetti collaterali

Uno dei più interessanti u ses for UDLs è quello di creare effetti collaterali (un'operazione diversa dalla normale o normale operazione, sia per rendere l'applicazione più breve e più efficiente o per fornire maggiore flessibilità). Si desidera definire un determinato tipo di operazione che si verifica in seguito alla definizione del letterale.

Ciò che ottieni è puramente letterale, ma letterale che non denota necessariamente un valore che prevedi di utilizzare in seguito. L'esempio CustomUDL03 mostra uno di questi usi non tradizionali.

# include usando lo spazio dei nomi std; operatore vuoto" _countdown (unsigned long long Value) {for (int i = Value; i> = 0; i--) cout << i << endl;} int main () {10_countdown; return 0;}

Si noti che l'operatore _countdown non è collegato a qualcosa che normalmente si assocerebbe a un valore, in realtà non restituisce alcun valore, ma si ottiene invece un effetto collaterale. Quando si esegue questo esempio, si questa uscita.

10 9 8 7 6 5 4 3 2 1 0

Cosa è successo è che il compilatore ha sostituito 10_countdown con estratti singoli cout, uno per ogni iterazione. che si finisce con è 11 istruzioni cout che emettono i valori compresi tra 10 e 0 (in ordine inverso) L'effetto collaterale UDL apre tutti i tipi di possibilità interessanti per la creazione di codice che semplifica determinate attività ripetitive in un modo che rende ovvio il loro uso.

Creazione di propri UDL in C ++ - dummies

Scelta dell'editore

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Se puoi scrivere dati in un file in PHP, sarebbe logico che tu possa leggere da quel file anche per la programmazione HTML5 e CSS3. Il readContact. programma php recupera i dati salvati nel programma precedente e li visualizza sullo schermo. Non è difficile scrivere un programma per leggere ...

Come usare una classe PHP in uno script - dummy

Come usare una classe PHP in uno script - dummy

Il codice classe PHP deve essere inserito lo script che usa la classe. Più comunemente, la classe viene archiviata in un file di inclusione separato ed è inclusa in qualsiasi script che utilizza la classe. Per usare un oggetto, devi prima creare l'oggetto dalla classe. Quindi quell'oggetto può eseguire qualsiasi metodo che ...

Scelta dell'editore

Come usare lo strumento Timbro clone di Photoshop - manichini

Come usare lo strumento Timbro clone di Photoshop - manichini

Puoi usare lo strumento Timbro clone in Photoshop per rimuovere gli angoli e altri difetti copiando una porzione dei pixel circostanti, che dovrebbero avere un colore e una consistenza simili, sopra la parte malata dell'immagine. Per utilizzare lo strumento Timbro clone, attenersi alla seguente procedura: Selezionare lo strumento Timbro clone dallo strumento ...

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Se si nota un problema con Lightroom la prima volta che si avvia esso, qualcosa potrebbe essere andato storto durante il processo di installazione. Disinstallare e quindi reinstallare potrebbe essere tutto ciò che è necessario per correggere il problema. Il processo è diverso per ogni sistema operativo, quindi ecco i passaggi separati per ciascuno. Su Windows: Chiudi tutto ...

Fotografia For Dummies Cheat Sheet - dummies

Fotografia For Dummies Cheat Sheet - dummies

La fotografia è un hobby divertente e gratificante che può renderti molto popolare tra la gente nelle tue foto - o molto impopolare. Per ottenere il massimo da una fotocamera "inquadra e scatta", digitale o meno, la prima abilità da padroneggiare è bloccare l'attenzione. Puoi perfezionare le tue abilità fotografiche in modo che le tue foto siano ...

Scelta dell'editore

Agire per aumentare le emozioni edificanti - manichini

Agire per aumentare le emozioni edificanti - manichini

Al fine di elevare le tue emozioni, il primo passo è diventare consapevoli di quale emozioni che hai Diventa consapevole di ciò che ti innesca: cosa ti mette in agitazione e ti fa arrabbiare e ciò che ti rende molto eccitato. Un trigger sta guardando alcuni programmi televisivi e consente alle emozioni di questi programmi di permeare ...

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Quasi tutti i media commerciali destinati alle donne ottengono la loro pubblicità entrate dalle industrie del cibo, della bellezza, della dieta e della moda. Solo l'industria della dieta stessa è un'impresa commerciale da 33 miliardi di dollari l'anno. E, naturalmente, queste industrie hanno bisogno di clienti in modo continuativo per continuare a avere successo. È nel loro interesse per ...

Come si forma l'immagine del corpo nella tua gioventù - dummies

Come si forma l'immagine del corpo nella tua gioventù - dummies

In generale, ciò che hai vissuto con la tua famiglia quando stavano crescendo ha avuto un effetto diretto sui pensieri e le sensazioni che hai avuto sul tuo corpo. Ripensa ai tuoi anni più giovani. Quanto attentamente le seguenti affermazioni descrivono la tua famiglia? Nessuno ha esercitato. L'auto è stata utilizzata anche per viaggi brevi. Cibo pesante e da ingrasso ...