Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Познающая
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 25
1

Оператор присваивания

23.07.2013, 10:45. Просмотров 434. Ответов 2
Метки нет (Все метки)

Добрый день!
Помогите, пожалуйста, разобраться. Я не совсем понимаю работу перегруженного оператора присваивания в классе String, который содержит переменные-члены: указатель char *itsString и переменную unsigned short itsLen (длина строки):
C++
1
2
3
4
5
6
7
8
9
10
11
12
String& String::operator=(const String & rhs)
{
    if (this == &rhs)
     return *this;
    delete [] itsString;
    itsLen=rhs.GetLen();
    itsString = new char[itsLen+1];
    for (int i=0; i<itsLen; i++)
     itsString[i] = rhs[i];
    itsString[itsLen] = '\ 0';
    return *this;
}
Я не понимаю, почему он должен возвращать вообще что-нибудь. Допустим, он изменил текущую строку, но для чего возвращать затем ссылку на нее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 10:45
Ответы с готовыми решениями:

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор...

Оператор присваивания
Почему в этом случае вызывается оператор присваивания Fraction f4; ...

Оператор присваивания.
Всем привет!В универе щас работаем с классами и перегрузками.В частности...

оператор присваивания
Подскажите пожалуйста, вот я создал класс, конструктор которого создает...

Оператор присваивания
Какая разница между оператором &quot;=&quot; и &quot;==&quot; Почему , например , в цикле нужно...

2
0x10
2577 / 1756 / 289
Регистрация: 24.11.2012
Сообщений: 4,387
23.07.2013, 10:48 2
Если он не будет возвращать значение, то не будут работать и конструкции вида
a = b = c = d;
1
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
23.07.2013, 13:32 3
Цитата Сообщение от Познающая Посмотреть сообщение
но для чего возвращать затем ссылку на нее?
функция, которая возвращает ссылку, можно использовать с левой стороны от оператора присваивания

вот небольшой пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int &F(int &n)
{
    return n;
}
 
int main()
{
    int n=0;
 
    F(n)=100;       // это тоже самое, что и n=100
    std::cout << "n = " << n;   // n = 100
 
    return 0;
}
Добавлено через 8 минут
сцепленные вызовы как написал 0x10

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int &F(int &n)
{
    return n;
}
 
 
int main()
{
    int n1=0, n2=0, n3=0;
 
    F(n1)=F(n2)=F(n3)=100;
 
    std::cout << "n1 = " << n1 << std::endl;
    std::cout << "n2 = " << n2 << std::endl;
    std::cout << "n3 = " << n3 << std::endl;
 
    system("pause");
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2013, 13:32

Оператор присваивания
Здравствуйте! Есть класс, в котором перегружены операции сложения и...

оператор присваивания
Привет всем ! Каким образом вызывается оператор присваивания, например, здесь:...

Оператор присваивания в c++
Такой вопрос, для каких классов следует явно перегрузить оператор присваивания??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru