Я изучал перегрузку операторов в 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();
}