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

Абстрактный шаблонный класс - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С клавиатуры вводится выражение вида с ор с (с-цифра, ор-знак операции). Вычислить значение выражения. Использовать оператор вариантов. http://www.cyberforum.ru/cpp-beginners/thread169322.html
Буду благодарен!=(( 1. С клавиатуры вводится выражение вида с ор с (с-цифра, ор-знак операции). Вычислить значение выражения. Использовать оператор вариантов. 2. Вывести на экран второго и шестандцатую эквиваленты целого числа. Не использовать спецификатор типа% х,% Х в функции printf.
C++ Операции с векторами и матрицами а) Написать программу, которая выполняет следующую операцию : Q = X +3*Y Где X, Y, Q – векторы размером 20x1. Все элементы векторов X і Y заполнить единицами. Также программа должна предлогать ввод X и Y. б) Создать программу, которая выполняет следующую операцию: Q = МА*Х где МА – матрица размером 10х10; X, Q – векторы размером 10x1. Все элементы матрицы МА и вектора X заполнить... http://www.cyberforum.ru/cpp-beginners/thread169316.html
Вопрос по программе. Нужно протабулировать ф-цию C++
Приветствую вас дамы и господа Тут такое дело... Задание: Код: # include <iostream.h> # include <conio.h> # include <math.h>
Экстремумы Матрицы и Подпрограммы C++
Здраствуйте помогите пожалуйста с задачками на С++! 1) Вычислите результат, указанный в варианте задания. Константа A (если она есть в варианте) и вектора X и (или) Y задаются вводом. Размер векторов X и Y одинаков и равен n. Если экстремальное значе¬ние повторяется, а надо найти его номер, считайте результатом номер первого порядку экстремума. В каждой из матриц A (4×3), B (5×4) поменять...
C++ класс. ввод данных http://www.cyberforum.ru/cpp-beginners/thread169296.html
Есть класс. У каждого имени - свое числовое значение. Нужно сделать так, чтобы после заполнения поля "имя" вылазило типа этого: "Сколько у этого человека будет значений?", ввести эти значения, и потом все снова: "имя", несколько значений, их ввод и т.д Т.е. полсе каждого ввода имени я самостоятельно хочу решать: сколько у этого человека будет значений и, соответсвенно, вводить их. class bank...
C++ Удаление цифр из символьной строки Доброго всем времени суток :) Такая задача: на языке C нужно составить программу удаления из строки символов только цифры. Например, строка "dfg546sv435", должно получиться "dfgsv". Поможете? подробнее

Показать сообщение отдельно
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
28.09.2010, 07:02     Абстрактный шаблонный класс
Пара замечаний к реализации:
Цитата Сообщение от Lavroff Посмотреть сообщение
C++
1
2
3
4
ConsoleMatr<T> operator +=(const ConsoleMatr&);
ConsoleMatr<T> operator +(const ConsoleMatr&);
ConsoleMatr<T> operator *=(const ConsoleMatr&);
ConsoleMatr<T> operator *(const ConsoleMatr&);
operator += и operator *= должны возвращать ConsoleMatr<T>&, а operator+ и operator* могут и должны быть const. И вообще, везде где ты возвращаешь *this, тип возвращаемого значения с большой вероятностью будет ссылкой.
C++
1
2
3
4
5
        template<class T>
        MathMatr<T>& MathMatr<T>::operator =(const MathMatr<T>& Ob)
        {
                if(this==&Ob)
                        return *this;
Оператор присваивания, который делает проверку на само-присваивание, с большой вероятностью не является exception-safe. И действительно, если в вызове SetSize произойдет исключение, то объект окажется в несколько странном состоянии.

Гораздо более надежной и простой является следующая реализация operator=:
C++
1
2
3
4
5
6
MathMatr & operator=(const MathMatr & other)
{
    MathMatr cpy(other);  // may throw
    cpy.swap(*this);  // can't throw
    return *this;
}
Причем swap должен быть небросающим. В твоем случае такой swap реализуется элементарно:
C++
1
2
3
4
void swap(MathMatr & other)
{
    Matrix.swap(other.Matrix);
}
C++
1
throw std::string("Size of two matrix for sum must be equal!");
Вместо выбрасывания просто строки было бы гораздо лучше использовать один из стандартных классов исключений. Например, сюда больше подойдет invalid_argument из stdexcept.
 
Текущее время: 01:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru