Ho una domanda sulla differenza tra volatile e mutabile. Ho notato che entrambi i due significano che potrebbe essere cambiato. Cos'altro? Sono la stessa cosa? Qual è la differenza? Dove sono applicabili? Perché le due idee sono proposte? Come usarli in modo diverso?volatile vs. mutabile in C++
Grazie mille.
Gli oggetti 'volatile' possono anche essere modificati da processi che non coinvolgono la CPU. Ad esempio, un registro ricevuto da un byte in una periferica di comunicazione può incrementare se stesso sulla ricezione di un byte (e questo può anche attivare un interrupt). Un altro esempio è un flag di interrupt in attesa di registrazione in una periferica. –
Inoltre, 'volatile' non significa solo che l'oggetto può cambiare al di fuori della conoscenza del compilatore, ma significa anche che le scritture sull'oggetto non possono essere eliminate dal compilatore anche se tali scritture sembrano essere inutili. Ad esempio: 'x = 1; x = 0; 'se' x' è volatile, il compilatore deve emettere entrambe le operazioni di scrittura (che potrebbero essere significative a livello di hardware). Tuttavia, per un oggetto non volatile, il compilatore può scegliere di non preoccuparsi di scrivere il '1' poiché non viene mai utilizzato. –
Un oggetto può essere contrassegnato sia 'const' che' volatile'! Non puoi cambiare l'oggetto, ma può essere cambiato dietro le tue spalle. – CTMacUser