У меня два вопроса
1) Почему мы можем указать значение по умолчанию, если член является открытым, но когда он является закрытым, нам не разрешается? Возьмите пример ниже:
#include <iostream>
using namespace std;
class Test
{
private:
int a=5;
public:
Test()
{
cout<<a<<endl;
cout<<"default const";
a=0;
}
};
int main()
{
Test x;
cout<<x.a;
}
Мы получаем ниже ошибку для этого:
Compile Errors :
prog.cpp: In function 'int main()':
prog.cpp:6:11: error: 'int Test::a' is private
int a=5;
^
prog.cpp:19:13: error: within this context
Принимая во внимание, что если я сделаю это публично, как показано ниже:
#include <iostream>
using namespace std;
class Test
{
public:
int a=5;
Test()
{
cout<<a<<endl;
cout<<"default const";
a=0;
}
};
int main()
{
Test x;
cout<<x.a;
}
Мы получаем вывод как:
5
default const0
2) Мой следующий вопрос: почему у нас такое поведение? Кроме того, когда мы предоставляем это значение по умолчанию, почему значение конструктора переопределяет значение по умолчанию, предоставленное в классе?