Errori, bug, domande - pagina 1055
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
Trova servicedesk nel tuo profilo.
Non c'è contraddizione qui, altrimenti B avrebbe accesso a C.t come mostrato qui sotto, mentre B non è derivato da C
Nel tuo esempio, B dovrebbe avere accesso a C.t e non vedo ragioni per proibirlo.
Siete entrambi strani, confondete le classi e le istanze. Non credo che un'altra istanza della stessa classe B dovrebbe avere accesso a t.
I campi protetti dovrebbero essere accessibili solo dal proprio (della stessa istanza B, cioè questo), e le altre istanze (anche della stessa classe B) dovrebbero essere chiuse... Qui fammi rinominare per chiarezza:
Cioè per me - entrambe le funzioni non dovrebbero compilare, non solo la prima. Se in C++ la seconda si compila e funziona - allora è una foratura del C++, non una virtù.
In breve:
Il tuo paragone con il portafoglio non è corretto.
Posso farti un esempio in cui hai bisogno di accedere ai membri protetti, ma non si tratta delle mie o delle tue preferenze.
Se il programmatore vuole proibire qualcosa, può farlo lui stesso e il compilatore deve proibirlo,
se può interferire con il programma.
Nell'esempio di cui sopra, la classe B sa della classe A, quindi non incasinerà nulla lì.
E se volete impedirlo, mettetelo nella sezione privata, o non ereditate da una classe, o pensate a mille altri modi.
Cioè per me - entrambe le funzioni non dovrebbero compilare, non solo la prima. Se in C++ la seconda si compila e funziona - questo è un difetto del C++, non una virtù.
Allora neanche il suo portafoglio sarebbe accessibile
Ancora una volta: distinguere attentamente tra classi (tipi) e istanze (variabili). I campi propri (questo) sono liberamente accessibili, anche per ereditarietà (a differenza dei privati), altri (altre variabili della stessa classe) non devono essere accessibili. (dovrebbe essere inaccessibile)
.....
Nell'esempio precedente, la classe B sa della classe A, quindi non incasinerà nulla lì.
...............
Solo perché so che hai un portafoglio non è una ragione per accedervi. Al tuo, per favore, solo attraverso get() e set() - se lo permetti (pubblico: int get(); int set();).
Solo perché so che hai un portafoglio, non è una ragione per accedervi. Al tuo - per favore. Al tuo - solo attraverso get() e set() - se permetti (public: int get(); int set();).
Il portafoglio è solo un caso speciale. E nessuno impedisce di metterlo nella parte privata.
In un altro caso, potreste aver bisogno di accedere alla variabile della classe madre di un altro oggetto.
E questo sta al programmatore decidere se permetterlo o meno. E il compilatore deve assicurare che il programma funzioni correttamente.
Ho dato un esempio di contraddizione ... l'oggetto è lo stesso
Non c'è contraddizione. Se ti riferisci a te stesso attraverso una "interfaccia esterna", preparati a essere colpito in faccia da te stesso ;)
..........., perché al momento della compilazione non ha informazioni sugli oggetti.
1. Il portafoglio è solo un caso speciale. E nessuno impedisce di metterlo nella parte privata.
2. In un altro caso, potreste aver bisogno di accedere alla variabile della classe madre di un altro oggetto.
3 E questo sta al programmatore decidere se permetterlo o meno.
4. Ed è compito del compilatore assicurarsi che il programma funzioni correttamente.
1. Metterlo nella parte privata non cambierà nulla in caso di
Erediterà, questo è evidente.
2. Ci sono poche cose che dovranno essere fatte. I motivi sono disponibili solo quando si accede alla propria copia.
3. quindi lasciatelo decidere. corretto. ;)
4. Questa è l'intera questione: cosa conta esattamente come "lavoro corretto".