При использовании C++ не разрешается обращаться к приватному атрибуту внутри функции main. Пример:
#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;
}
Понятно, почему возникает ошибка при обращении к приватным атрибутам вне методов класса, поскольку в C++ нет главных функций внутри классов.
Однако в Java это разрешено:
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);
}
}
Я понимаю, что в данном случае main находится ВНУТРИ класса Test. Однако я не могу понять, ПОЧЕМУ это разрешено, и каково влияние этого на разработку/управление кодом.
Когда я изучал C++, я однажды услышал: "Классы не должны иметь main. Main действует с экземплярами классов или использует их".
Может ли кто-нибудь пролить свет на этот вопрос?