Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с исходником, ... 
:(
    Опции темы
gepard
  Дата 3.5.2004, 05:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Помогите разобраться с кодом:
Код

struct CVector3
{
public:

CVector3() {}
CVector3(float X, float Y, float Z)
{
 x = X; y = Y; z = Z;
}
CVector3 operator+(CVector3 vVector)
{
 return CVector3(vVector.x + x, vVector.y + y, vVector.z + z);
}
CVector3 operator-(CVector3 vVector)
{
 return CVector3(x - vVector.x, y - vVector.y, z - vVector.z);
}
CVector3 operator*(float num)
{
 return CVector3(x * num, y * num, z * num);
}
CVector3 operator/(float num)
{
 return CVector3(x / num, y / num, z / num);
}
float x, y, z;      
};


Меня именно интересуют строки типа "CVector3 operator+", где вместо "+" любой знак. Что это? Зачем? Как это использовать? Мне вот тут один чел объяснил, что мол это указания, как надо исполнять то или иное действие над двумя переменными типа CVector3.
Помогите...



--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 3.5.2004, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Правильно сказал. Это перегрузка операторов.
У тебя в структуре есть Х , У и Зет. И как сложит две структуры красиво и понятно?
Ведь такая запись не очень смотрится:
Код
CVector3 V1, V2, V3;
V3.x=V1.x+V2.x;
V3.y=V1.y+V2.y;
V3.y=V1.y+V2.y;

Намного лучше так:
Код

CVector3 V1, V2, V3;
V3=V1+V2;

Коротко и ясно. Не правда ли?smile.gif


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 3.5.2004, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



BTW, здесь имеет смысл сделать параметры перегружаемых операторов константными ссылками, чтоб избежать лишнего вызова конструктора копирования.

CVector3 operator+(const CVector3 &vVector)
{
return CVector3(vVector.x + x, vVector.y + y, vVector.z + z);
}


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
gepard
Дата 4.5.2004, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



exclamation.gif Спасибо! exclamation.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.