Errori, bug, domande - pagina 2358
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Sebbene anche se l'oggetto non avesse metodi virtuali, dovreste comunque controllare la validità del puntatore quando vi accedete.
In realtà questa è una domanda ambigua. Per esempio, questo controllo è sempre presente in C# e solo se necessario in C++, il che dà un vantaggio in velocità.
Dopo tutto, se si chiama un metodo che non accede ai campi di un oggetto, non ha davvero senso controllare il puntatore. In sostanza, un tale metodo è equivalente a uno statico.
In generale, questa è una questione ambigua. Per esempio, C# ha sempre un tale controllo, mentre C++ lo ha solo quando serve, il che dà un vantaggio in termini di velocità.
Perché se state chiamando un metodo senza riferimenti ai campi dell'oggetto, non ha davvero senso controllare il puntatore. Un tale metodo è essenzialmente lo stesso di uno statico.
Un oggetto può non avere alcun dato, ma può implementare un comportamento assolutamente diverso e criticamente importante, ad esempio riferirsi a qualche dato esterno in un modo speciale dipendente dal tipo, o eseguire un'azione speciale. Non sono sicuro di come giustificare tale approccio come "equivalenza del metodo al metodo statico (cioè 100% non virtuale) in assenza di dati".
Cioè, almeno un oggetto puntatore ha sempre un campo - è il suo tipo. Con cui potete determinare gli indirizzi dei metodi che vengono chiamati. Altrimenti perché avete bisogno di OOP?
P.S. Anche se per gli oggetti automatici personalmente non ho nulla contro almeno una certa logica di comportamento (dato che quasi non li uso), ma poi non si dovrebbe lasciare che siano assegnati ai puntatoriPurtroppo ho ingannato tutti, perché le costruzioni
l'operatore di copia viene chiamato al posto del costruttore di copia.
Nel secondo caso, dopo che il costruttore B() è chiamato
In ogni caso, prima analizziamo, poi correggiamo.
Oh, si scopre che µl ha un costruttore di copia autogenerato (pensavo non esistesse affatto, dato che non si può classificare obj(other_obj), solo con =). Ma perché non viene generato se:
Oh, si scopre che µl ha un costruttore di copia autogenerato (pensavo non esistesse affatto, dato che non si può classificare obj(other_obj), solo con =). Ma perché non viene generato se:
default e delete non sono supportati.
Il costruttore di copie di default, a quanto pare, è stato fatto finora.
Solo operatore di copia, cioè per i costrutti:
Il costruttore CFoo predefinito viene chiamato per primo, e poi l'operatore di copia
viene chiamato l'operatore di copia, non il costruttore di copia.
default e delete non sono supportati
È vero, ma avete solo bisogno di sovrascrivere la generazione del costruttore di copia quando c'è un costruttore di copia personalizzato, no? Non uno qualsiasi personalizzato.
Cioè l'oggetto non dovrebbe essere permesso di sostituire parzialmente le sue parti interne.
Questa è una specie di autolimitazione artificiale... Direi addirittura la ristrettezza di vedute.
Qual è il problema?
Ho trovato un tale disegno in me stesso... e funziona... bene. Quindi suggerisco agli sviluppatori di lasciarlo così com'è... almeno se gli operatori/costruttori corrispondenti sono esplicitamente definiti
Questa è una specie di autolimitazione artificiale... Direi addirittura la ristrettezza di vedute.
Qual è il problema?
Ho trovato un tale costrutto a casa mia... e tutto funziona... bene. Quindi suggerisco agli sviluppatori di lasciarlo così com'è... almeno se i relativi operatori sono esplicitamente definiti
Controlla per cominciare come funzionano le cose in C++. Apparentemente le sue regole sono state inventate da persone di "mentalità ristretta".
E creare dei tappi per proteggersi da un'architettura linguistica sbagliata ogni volta... No, bisogna farlo fin dall'inizio, cioè la lingua
Controlla prima come funzionano le cose in C++. Apparentemente le sue regole sono state inventate da persone di "mentalità ristretta".
Ma fare dei tappi ogni volta per proteggersi da un'architettura linguistica sbagliata... No, bisogna farlo fin dall'inizio, intendo la lingua.
Ricontrollato appositamente per voi, tenendo conto di https://www.mql5.com/ru/forum/1111/page2358#comment_10003995
Va bene DJ