Cosa significa il modificatore const dopo una dichiarazione di metodo - pagina 2

 
Vasiliy Sokolov:
Il metodo costante è un altro esempio del proverbio "volevamo fare meglio, ma è risultato essere lo stesso di sempre". Penso che questo sia un motto per C++ a tutti. Non c'è un uso pratico, ma complica significativamente la progettazione di programmi OOP perché è necessario controllare costantemente il tipo di oggetto che viene modificato (deve anche essere costante).

Posso farle un esempio di ciò che ha scritto?

 
Vasiliy Sokolov:
Il metodo costante è solo un altro esempio del proverbio "Volevamo che le cose andassero meglio ma è andata come al solito". Penso che sia un motto per C++ a tutti. Non è di alcuna utilità pratica, ma complica significativamente la progettazione di programmi OOP perché è necessario controllare costantemente il tipo dell'oggetto che viene modificato (deve anche essere costante).

))) Ho un vecchio libro di Stroustrup in giro, se i ladri entrano in casa, posso facilmente batterli con quello, pesa come un mattone )) Il vecchio ha fatto molta fatica con la lingua.

Ricordo che molto tempo fa sono stato inseguito in un colloquio di lavoro, mi hanno fatto una domanda e non ho potuto rispondere accuratamente. Mi hanno portato un libro come questo, l'ho letto e ho chiesto: "Lo usi anche tu?

Ho chiesto: - Lo usi tu? - I ragazzi ridono, va bene, nessuno ha ancora risposto correttamente a questa domanda, perché nessuno lo usa.

A proposito, ho un libro sui plus dei primi anni '90, prima che il primo standard fosse adottato. Un normale libro in brossura digeribile. Ma poi Ostap si è lasciato trasportare ))

 
Alexey Kozitsyn:

Posso avere un esempio di quello che hai scritto?

Alexey ha scritto un esempio. Un metodo costante non può cambiare i membri della sua classe. Quale sembra essere il problema? Basta non usare il modificatore const. Ma poi ci sono difficoltà nell'ereditarietà (specialmente dallalibreria standard): il designer ha definito il metodo virtuale const, ma nella classe derivata, il metodo ha bisogno di cambiare qualcosa nei suoi dati - e c'è una spina a causa di const. Senza di esso, il metodo non sarà sovrascritto, e con esso, il metodo derivato non può cambiare i dati della propria classe.

Qual è l'errore principale nell'introdurre un tale modificatore per i metodi di classe? Il principio principale dell'ereditarietà è violato: specializzazione e perfezionamento. La classe base proibisce al metodo della classe derivata di lavorare con i suoi dati interni. E non dovrebbe esistere una tale situazione.

 
Vasiliy Sokolov:

Sharpe puzza lontano un miglio ))

Non c'è niente di costrittivo, non c'è bisogno di blaterare.

 
Комбинатор:

Sharpe puzza lontano un miglio ))

Non lo nego. Sharpe è davvero una lingua perfetta, grande e bella.

Combinatore:

Const non complica nulla, non blah-blah

Ok, diciamo che ci si può sempre sbarazzare di const. Ma perché non spiega brevemente, con un esempio, cosa fa const? Qual è il suo vero uso? Per esempio, e preferibilmente non scritto dal nulla.

 
Costruire è una delle metafore impressionanti del C++: prima si depongono diligentemente trappole elaborate in tutto il codice, e poi si esce dalle proprie trappole - questo è l'intero processo della programmazione C++.
 
Vasiliy Sokolov:

...

Qual è l'errore principale dell'introduzione di un tale modificatore per i metodi di classe? Il principio principale dell'ereditarietà è violato: specializzazione e perfezionamento. La classe base proibisce ai metodi della classe derivata di lavorare con i suoi dati interni. Ma non deve esistere niente del genere.

Forse è una parte che viene passata dai creatori ai semplici utenti. Come la funzione start nell'Expert Advisor e le variabili Bid e Ask.

Quando si fa tutto da soli, non ha senso preoccuparsi di tutti i tipi di costruttori.

 
Vasiliy Sokolov:

Non lo nego. Sharp è davvero una lingua perfetta, grande e bella.

...

Fantastico. Ma è molto lontano dalla perfezione.
 
Dmitry Fedoseev:
Fantastico. Ma è molto lontano dalla perfezione.
The Sharp è buono, non a causa di qualche genio che l'ha fatto, ma perché è l'ultimo. Prima, per 30 anni hanno cercato di uccidere con rastrelli di varie dimensioni e configurazioni fantasiose. Il C++ è stato un meraviglioso terreno di prova per questo. Dopo che tutti sono stati uccisi, i ragazzi della Microsoft si sono spenti .... ha adottato i concetti collaudati e ha creato un linguaggio sintatticamente pulito da zero.
 
A proposito, MetaQuotes ha avuto anche una buona possibilità di "sviluppare" gradualmente MQL5 in un mostro simile a Robe come il C++. Ma la profonda conoscenza del C++ (dove ci deve essere stato sudore, lacrime e odio) gli ha fatto capire che non dovrebbero seguire i consigli dei programmatori C++ della vecchia scuola del forum. Ecco perché ora abbiamo un linguaggio di programmazione sintatticamente pulito e più o meno strettamente tipizzato. È persino sorprendente che siamo riusciti a creare una tale caramella, basata su un'eredità completamente mostruosa. La padronanza non può essere persa, come si dice.
Motivazione: