![]() |
С++ | конструктор и operator[]
1.Каким образом vec узнал, что он это параметр "v", а не "с".
2. Почему если в operator`e[] написать return с[i], все работает точно также как и при return v[i]; и вообще как работает operator[], что-то сам не могу понять как сделал. Почему vec[2] = 4 работает (вроде понимаю, но нужно слово того кто знает!)? Код:
#include <iostream.h> |
Какой-то бессмысленный код тут, имхо... Да еще и с ошибками... Писать надо не delete v, а delete [] v; А про перегрузку операторов см. в учебниках по С++
>>что-то сам не могу понять как сделал значит не сделал, а бездумно скопировал |
Skrip
Цитата:
|
Skrip
Скажие лучше, что вы хотели добиться этим кодом?? Может проблема быстрей решиться... |
Savant, какую-то часть я действительно списал (только объявление класса), когда разбирал пример из учебника, НО НЕ БЕЗДУМНО. Функцию operator[] сделал сам, но как работает не понял, порадоксально но факт.
ivank, спасибо. А каким образом компилятор догадался, что в функции operator[](int i) переменная "i" указывается между квадратными скобками ("vec[i]= 2", а не "vec[](i) = 2") возможно сформулировал непонятно. |
Skrip
Цитата:
Код:
int & vector::operator [] (int i) ; operator[] - имя функции, int i - тип и количество аргументов. Другое дело, что вызывается она немного по-другому... А именно так, как это определено в синтаксисе конкретного операнда. Если у Вас в учебнике про это ни слова, смените учебник. Или прочтите эту статью (первое, что нашлось в гугле) |
Skrip
Цитата:
|
Всем спасибо!
|
Подскажите мне еще пожалуйста почему current_size недоступна в stlen.
Код:
#include <iostream.h> |
Skrip
Цитата:
|
Skrip
Переменная current_size должна быть локальной в stlen, а не private-полем. А ещё лучше sttr в функциб передавать по константной ссылке. Дабы избежать проблем с накладными расходами на копирование. |
Время: 19:45. |
Время: 19:45.
© OSzone.net 2001-