Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2016, 21:16   #1
Valera007
Новичок
Джуниор
 
Регистрация: 21.06.2016
Сообщений: 2
По умолчанию Виртуальная функция

Есть класс Array:
Код:
template <class T> class Array 
{
private:
    T *ptr;
    int size;
    static const int max_size = 100;
public:
    Array()  {
        size = max_size;
        ptr = new T[size];      
    }
    Array(int size)  {
        if(size <= max_size)
            this->size = size;
        else
            this->size = max_size;
        ptr = new T[size];
        for(int i = 0; i < size; i++)
            ptr[i] = 0;
    }
    Array(const Array &obj)  {
        size = obj.size;
        ptr = new T[size];
        for(int i = 0; i < size; i++)
            ptr[i] = obj.ptr[i];
    }
    ~Array()  {
        delete []ptr;
    }
    T &operator[](int index)  {
        if(index >= 0 && index < size)
            return ptr[index];       
 
    }
    friend ostream &operator <<(ostream &os, const Array &obj)  {
        for(int i = 0; i < obj.size; i++)
            os << obj.ptr[i];
        return os;
    }
   virtual void summ(Array a, Array b){}
};
Никак не могу понять, как же сложить два массива поэлементно с помощью виртуальной функции. Пожалуйста подскажите
Valera007 вне форума Ответить с цитированием
Старый 21.06.2016, 21:28   #2
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Так же, как и с помощью не виртуальной.

А вообще для начала нужно определиться:
- Куда девать результат? Так как функция не возвращает ничего, то, вероятно, он будет записан в массив a.
- Что делать если массивы разных размеров?
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 21.06.2016, 21:54   #3
Valera007
Новичок
Джуниор
 
Регистрация: 21.06.2016
Сообщений: 2
По умолчанию

Цитата:
Сообщение от zumm Посмотреть сообщение
Так же, как и с помощью не виртуальной.

А вообще для начала нужно определиться:
- Куда девать результат? Так как функция не возвращает ничего, то, вероятно, он будет записан в массив a.
- Что делать если массивы разных размеров?
По поводу куда девать результат - в третий массив, либо в а.
Использовать одну длину, скорее всего, ибо задача заключается в реализации сложения поэлементно двух массивов с помощью виртуальной функции (извините что сразу задание не уточнил).
Не понимаю как должно быть написано в коде

Код:
 
//В главной программе 
 int = 5
 Array <int>mas1(n);
 Array <int>mas2(n);
 for(int i = 0; i < n; i++)
{
       mas1[i] = i + 2;
       mas2[i] = i + 4;
}
UPD:
Черт, кажется тут проблема в другом. Как передать в функцию два массива правильно ?
Valera007 вне форума Ответить с цитированием
Старый 21.06.2016, 22:50   #4
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Ни одно из предложенных вами решений о том, куда деть результат, с текущем интерфейсом функции невозможно.

Походу дела, результат должен быть сохранен в самом объекте, метод которого и был вызван.

Код:
virtual void summ(Array<T> a, Array<T> b)
{
    for(int i = 0; i < this->size; i++)
    {
        this[i] = a[i] + b[i];
    }
}
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 22.06.2016, 23:31   #5
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Будем считать, что мне было нечего делать - http://goo.gl/7Dnupw
В планах порабощение вселенной...

Последний раз редактировалось zumm; 22.06.2016 в 23:42.
zumm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виртуальная память Regina59 Помощь студентам 1 10.05.2015 00:49
Виртуальная таблица promer БД в Delphi 17 16.07.2014 09:11
виртуальная и чисто виртуальная функции JiryPK Visual C++ 5 18.11.2011 00:38
Виртуальная функция в С++ MrJenika Помощь студентам 6 04.01.2010 18:12
виртуальная функция? SERGOO Общие вопросы C/C++ 4 18.09.2007 21:43