Доступ к закрытому члену класса (C ++) - PullRequest
0 голосов
/ 08 мая 2020

Я изучал перегрузку операторов в C ++ и наткнулся на этот фрагмент кода, который предназначен для перегрузки бинарного оператора + для объединения двух строк. У меня проблема с этим кодом, заключающаяся в том, что в операторной функции мы создаем экземпляр класса String и получаем доступ к его значению напрямую с помощью оператора (.), Даже если это значение является закрытым членом класса String. Но код такой ошибки не дает. Я не могу понять, с какой перспективы я ошибаюсь?

# include<iostream>
# include<cstring>

using namespace std;

class String
{
    char value[80];
public:
    void getData()
    {
        cout << "Enter the string...\n";
        cin.getline(value, 80);
    }
    String operator +(String s2);
    void display()
    {
        cout << value;
    }
};

String String::operator+(String s2)
{
    String s3;
    strcpy(s3.value, value);
    strcat(s3.value, s2.value);
    return s3;
}

int main()
{
    String s1,s2,s3;
    s1.getData();
    s2.getData();
    s3 = s1 + s2;
    s3.display();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...