Quando si utilizza C++ non è consentito accedere a un attributo privato all'interno di una funzione principale. Esempio:Qual è l'idea dietro l'accesso agli attributi privati all'interno di main? Java x C++
#include <iostream>
using namespace std;
class Test {
private: int a;
public:
Test(int value) { a = value; }
int getValue() { return a; }
};
int main (int argc, char *argv[]) {
Test test2(4);
cout << test2.a; // Compile error! Test::a is private within this context
cout << test2.getValue(); // OK!
return 0;
}
E 'chiaro il motivo per cui v'è un errore durante l'accesso attributi privati al di fuori metodi di classe, visto che il C++ non hanno funzioni principali all'interno delle classi.
Tuttavia, in Java è consentito:
public class Test {
private int a;
public Test(int value) { a = value; }
public int getValue() { return a; }
public static void main (String args[]) {
Test test1 = new Test(4);
System.out.println(test1.a);
}
}
capisco in questo caso principale è all'interno della classe di test. Tuttavia, non riesco a capire l'idea PERCHÉ è permesso, e qual è l'impatto di questo nello sviluppo/gestione del codice.
Durante l'apprendimento del C++, ho sentito una volta "Le classi non dovrebbero avere un main, Main agisce con o usa istanze di classi".
Qualcuno può far luce su questa domanda?
'main' ha molto da vivere all'interno di una classe in java, dato che sarebbe illegale vivere fuori da una classe. Non esiste un ambito globale per le funzioni in java. – Dervall
Ho sempre il punto di ingresso principale in una classe con nient'altro che la funzione principale. Non ha nemmeno senso avere il principale in una classe per me. – L7ColWinters
Dalle risposte finora credo che questa sia stata una scelta degli sviluppatori linguistici: non fare eccezioni a Main(), anche se era una funzione speciale, garantendo l'accesso a qualsiasi altro metodo. –