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
Dai, lo uso sempre.
Dove, in quale luogo e come?
Moderatori, scusate se ripeto la domanda. Voglio davvero avere una risposta.
Perché dovreste riassegnare intenzionalmente un puntatore passato a una funzione? Naturalmente, ci sarà una perdita. Ma questo non è un "classico leak", ma un classico errore di lavorare con un puntatore a un oggetto.
Non dovete creare un nuovo oggetto qui, ma gestire l'oggetto esterno il cui puntatore è stato passato nella funzione.
Dove, in quale luogo e come?
Moderatori, scusate se ripeto la domanda. Voglio davvero avere una risposta.
Dove, in quale luogo e come?
Moderatori, scusate se ripeto la domanda. Voglio davvero avere una risposta.
Se ho capito bene la domanda, dichiariamo la classe come oggetto usando new.
Poi usate un punto per chiamare i metodi pubblici della classe attraverso l'oggetto creato.
Dopo che tutti i metodi chiamati sono stati eseguiti, svuotiamo la memoria cancellando l'oggetto creato delete.
Se ho capito bene la domanda, dichiariamo la classe come oggetto usando new.
Poi chiamiamo i metodi pubblici della classe attraverso l'oggetto creato, usando un punto.
Dopo che tutti i metodi chiamati sono stati eseguiti, svuotiamo la memoria cancellando l'oggetto creato delete.
No. All'inizio pensavo fosse un parametro di funzione come questo - oggetto ma non per riferimento, ma c'è un punto e virgola alla fine. Se è una normale creazione di un oggetto alla dichiarazione, allora perché è tra parentesi? Quindi per ora rimane il mistero del secolo.
No. All'inizio pensavo fosse un parametro di funzione come questo - oggetto ma non per riferimento, ma c'è un punto e virgola alla fine. Se è una normale creazione di un oggetto alla dichiarazione, allora perché è tra parentesi? Quindi per ora rimane il mistero del secolo.
E perché avete deliberatamente riassegnato un puntatore passato a una funzione? Naturalmente, ci sarà una perdita. Ma non è una "perdita classica", ma un classico errore di gestione di un puntatore a un oggetto.
Non è necessario creare un nuovo oggetto qui, ma gestire l'oggetto esterno il cui puntatore è stato passato nella funzione.
Non si tratta del mio esempio, ma dell'implementazione dei puntatori stessi in MQL - se non è necessario dereferenziarli (e il puntatore può essere assegnato a un'istanza dell'oggetto!), se invece di passare un puntatore si può passare un riferimento all'oggettohttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665
qui non abbiamo informazioni dettagliate su dove e quando (CObj& obj) è apparso (& non è un'operazione di dereferenziazione del puntatore, ma l'acquisizione di un puntatore GetPointer() )
Ok, non voglio sprecare informazioni... Mi sono già detto, e lo ripeterò ancora una volta in questo forum - MQL non è C++, è così che è implementato - beh, non ho altre opzioni
Non si tratta del mio esempio, ma dell'implementazione dei puntatori stessi in MQL - se non è necessario dereferenziarli (e il puntatore può essere assegnato a un'istanza dell'oggetto!), se invece di passare un puntatore si può passare un riferimento all'oggetto https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
qui non abbiamo informazioni dettagliate su dove e quando (CObj& obj) è apparso (& non è un'operazione di dereferenziazione del puntatore, ma l'acquisizione di un puntatore GetPointer() )
Ok, non voglio sprecare informazioni... Mi sono già detto, e lo ripeterò ancora una volta in questo forum - MQL non è C++, è così che è implementato - beh, non ho altre opzioni
Sei drammatico, non ci sono complessità e confusioni.
Le parentesi sono perché questa è una nota sul testo))))
Quindi ci siamo.
Come questo:
void z(CObj * o){ }
Non solo può, ma meglio, perché si può chiamare così:
z(GetPointer(obj));
Se passate un puntatore per riferimento, avete bisogno di un'altra variabile per il puntatore.
***
E se un puntatore deve essere passato a una funzione per creare un oggetto nella funzione, ecco come funziona:
Questo è praticamente tutto quello che volevate sapere sull'OOP, ma avevate paura di chiedere)))