Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Класс Матрица, перегрузка оператора *= - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сравнение строк на идентичность http://www.cyberforum.ru/cpp-beginners/thread430067.html
Как определить одинаковы ли строки (символы в них)? Допустим есть стока s1 = "asd" и s2 = "asd". То есть обе они содержать в себе символы "asd". В моем случае, одна строка задана в программе, а 2я...
C++ указатель не меняется после выхода из ф-ции void changePionter(char *p) { p=NULL; } int main() { char u='F'; char *p= &u; changePionter(p); // *p=='F'; // a надо (p==0), как сделать? (да так, чтобы ф-ця возвращала void) ... http://www.cyberforum.ru/cpp-beginners/thread430057.html
C++ Табулирование функции y=3^x
Задание: Дана функция: y={3}^{x} , с диапазоном 0.1\leq x\leq 1 Вот код программы: #include <stdio.h> #include <math.h> #include <stdlib.h> int main () {
К числу прибавить объект класса C++
Не получается перегрузить '+' для сложения числа с объектом Пишу через френд friend Vremya operator + (int a, Vremya ); Vremya operator + (int a, Vremya b) { int sec = getSec(b); ...
C++ массив чисел http://www.cyberforum.ru/cpp-beginners/thread430025.html
Даны натуральные числа i,N, массив чисел A(N) (i < N ). Найти среднее арифметческое всех чисел массива, ...
C++ Алгоритм запоминания языка при изучении... Программисты, подскажите свои методы запоминания столь многочисленных функций языков программирования... Только не надо писать что единственный способ - много писать. При этом способе запоминаются... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2012, 19:07
soirkar, можно продублировать код из operator*, но это может повлечь за собой одну неприятную вещь: если вдруг понадобится что-то изменить в операторе умножения, то в данном случае придётся изменить код только в одном месте, а во втором случае придётся делать изменения в обоих операторах. Неприятная эта вещь потому, что можно забыть произвести изменения в одном из операторов и получить неэквивалентную работу.
А вообще, лучше перегружать operator* на основе operator*=, а не наоборот, потому что operator* логичнее перегрузить вне класса, а чтобы не использовать friend и вообще не нарушать инкапсуляцию, эту перегрузку можно осуществить через operator*=, который обязан быть членом класса. То же относится к любым другим бинарным операторам.

Добавлено через 1 минуту
А если речь об эффективности в плане производительности, то не думаю, что такой способ более эффективный. Ведь то, что можно сделать напрямую, с сырыми данными, тут делается через дополнительные вызовы методов (operator* и operator=), что понесёт дополнительные затраты.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru