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