|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » С++ | конструктор и operator[] |
|
|
С++ | конструктор и operator[]
|
Новый участник Сообщения: 15 |
Профиль | Отправить PM | Цитировать 1.Каким образом vec узнал, что он это параметр "v", а не "с".
2. Почему если в operator`e[] написать return с[i], все работает точно также как и при return v[i]; и вообще как работает operator[], что-то сам не могу понять как сделал. Почему vec[2] = 4 работает (вроде понимаю, но нужно слово того кто знает!)? #include <iostream.h> class vector { int* v; int* c; public: vector (int); ~vector (); int& operator[] (int); }; vector::vector (int s) { v = new int [s]; c = new int [s]; }; vector::~vector() {delete v; delete c;}; int& vector::operator[](int i) { return v[i]; }; vector vec(10); main () { vec[2] = 6; cout << vec[2]; system("pause"); } |
|
Отправлено: 18:16, 28-07-2005 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Какой-то бессмысленный код тут, имхо... Да еще и с ошибками... Писать надо не delete v, а delete [] v; А про перегрузку операторов см. в учебниках по С++
>>что-то сам не могу понять как сделал значит не сделал, а бездумно скопировал |
Отправлено: 18:40, 28-07-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Skrip
Цитата:
|
|
------- Отправлено: 00:41, 29-07-2005 | #3 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Skrip
Скажие лучше, что вы хотели добиться этим кодом?? Может проблема быстрей решиться... |
------- Отправлено: 02:18, 29-07-2005 | #4 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Savant, какую-то часть я действительно списал (только объявление класса), когда разбирал пример из учебника, НО НЕ БЕЗДУМНО. Функцию operator[] сделал сам, но как работает не понял, порадоксально но факт.
ivank, спасибо. А каким образом компилятор догадался, что в функции operator[](int i) переменная "i" указывается между квадратными скобками ("vec[i]= 2", а не "vec[](i) = 2") возможно сформулировал непонятно. |
|
Последний раз редактировалось Skrip, 29-07-2005 в 08:43. Отправлено: 05:09, 29-07-2005 | #5 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Skrip
Цитата:
int& - тип возвращаемого значения, operator[] - имя функции, int i - тип и количество аргументов. Другое дело, что вызывается она немного по-другому... А именно так, как это определено в синтаксисе конкретного операнда. Если у Вас в учебнике про это ни слова, смените учебник. Или прочтите эту статью (первое, что нашлось в гугле) |
|
Отправлено: 13:58, 29-07-2005 | #6 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Skrip
Цитата:
|
|
------- Отправлено: 13:59, 29-07-2005 | #7 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Всем спасибо!
|
Отправлено: 17:32, 29-07-2005 | #8 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать Подскажите мне еще пожалуйста почему current_size недоступна в stlen.
#include <iostream.h> class m_string { friend int stlen (m_string); public: m_string(); m_string(int); ~m_string(); char operator[](int i){return str[i];}; m_string operator= (char* cr); private: int mas_size, current_size; char* str; }; extern int stlen (m_string sttr) { while (sttr[current_size] != '\0') {current_size++;}; return current_size; }; |
Отправлено: 12:05, 30-07-2005 | #9 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Skrip
Цитата:
|
|
Отправлено: 12:58, 30-07-2005 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Служебные - [addon] Утилита конструктор TextMode MassStorage-аддона (конструктор) | Mr dUSHA | Наборы обновлений для Windows XP/2003/Windows 7 | 845 | 27-05-2016 14:39 | |
C/C++ - Перегрузка операторов 'operator []' | ganselo | Программирование и базы данных | 3 | 29-03-2009 14:57 | |
OperaTor | Sharik987 | Хочу все знать | 5 | 04-12-2008 12:37 | |
[решено] Основы C++ | Использование operator[int, ...] | hasherfrog | Программирование и базы данных | 2 | 28-09-2006 15:20 | |
Основы C++ | Перегрузка operator+ для m_string | Skrip | Программирование и базы данных | 1 | 10-08-2005 13:41 |
|