classe IntVec
{
public:
IntVec();
IntVec(int siz);
IntVec(const IntVec& temp);
~IntVec();
private:
int* arr;
int size;
};
IntVec::IntVec()
{
size = 2;
arr = new int[size];
}
IntVec::IntVec(int siz)
{
size = siz;
arr = new int[size];
}
IntVec::IntVec(const IntVec& temp)
{
size = temp.size; // Pourquoi cela ne provoque-t-il pas d'erreur ? size est une variable privée de l'objet temp.
arr = new int[size];
for (int i = 0; i < size; i++)
{
arr[i] = temp.arr[i]; // Pourquoi cela ne provoque-t-il pas d'erreur ? arr est une variable privée de l'objet temp.
}
}
IntVec::~IntVec()
{
delete[] arr;
}
int main()
{
IntVec test1(2);
cout << test1.size; // Provoque une erreur (comme prévu), car size est privée.
}
Je ne comprends pas pourquoi je peux accéder aux variables size et arr de temp dans le constructeur de copie, alors qu'elles sont des variables privées. Il est logique que j'obtienne une erreur dans main(), mais je ne suis pas sûr de pourquoi je n'obtiens pas d'erreur dans le constructeur de copie.