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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите задачу для ооп, наследование исключение, чтобы отточить навыки 
V
    Опции темы
ferz721
Дата 12.11.2011, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

PM MAIL   Вверх
bsa
Дата 12.11.2011, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, может тебе стоит литературу почитать? Обычно, там есть задачки на закрепление материала. Список литературы в ответах на часто задаваемые вопросы, тем закреплена в данном разделе.
PM   Вверх
ferz721
Дата 12.11.2011, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bsa в той книжки что я читаю легкие задачи и однотипные, большинство из них я уже решил. для меня самый главный вопрос какие задачи выполнять. по си мне понравились задачи из кернигана. по плюсам пока норм задач невидел
PM MAIL   Вверх
bsa
Дата 13.11.2011, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, разработай класс "умный указатель" (с подсчетом ссылок), который при может быть потокобезопасен, но может и не быть (статический полиморфизм). Указатель можно копировать и присваивать. Пока живет хоть один указатель на объект, объект не уничтожается. Как только уничтожается последний указатель, то к объекту применяется delete.
хинт: необходимо использовать шаблоны.

Это сообщение отредактировал(а) bsa - 13.11.2011, 00:01
PM   Вверх
PashaLost
Дата 13.11.2011, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http://forum.vingrad.ru/forum/topic-341676.html
на вот мою попробуй решить smile если покажется не сложной, могу выдвинуть РЯД требований. 
PM MAIL   Вверх
C4EBA
Дата 13.11.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Думаю. стоит посмотреть книги

Павловская C++ Программирование на языке высокого уровня
Павловская C++. Объектно-ориентированное программирование. Практикум

Книги есть в Сети
PM   Вверх
ferz721
Дата 25.11.2011, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#ifndef SMARTPOINTER_H
#define SMARTPOINTER_H
#include "HEADER.h"
class SmrtPoint
{
private:
    int *point_;
    static int count_s;
public:
    SmrtPoint(): point_(NULL)
    {
        ++SmrtPoint::count_s;
    }
    SmrtPoint(int *p): point_(p)
    {
        ++SmrtPoint::count_s;
    }
    SmrtPoint(SmrtPoint *p): point_(p->point_)
    {
        ++SmrtPoint::count_s;
    }
    int* operator=(SmrtPoint *p) throw()
    {
        this->point_ = p->point_;
        return this->point_;
    }
    int* operator+(int i) throw()
    {
       return this->point_+i;
    }

    int* operator-(int i) throw()
    {
       return this->point_-i;
    }

    int* operator&() throw()
    {
        return this->point_;
    }

    int* operator->() const throw()
    {
        return this->point_;
    }
/*
    int* operator[](int i)
    {
        return this->point_[i];
    }
*/
    int* operator++() throw()
    {
       return this->point_++;
    }

    int* operator--() throw()
    {
       return this->point_--;
    }
    int  operator  *  ()  const throw()
    {
        return *point_;
    }

    virtual ~SmrtPoint()
    {
        --SmrtPoint::count_s;
    }
};
int SmrtPoint::count_s = 0;

#endif // SMARTPOINTER_H


Код

#ifndef HEADER_H
#define HEADER_H
#include <iostream>
using namespace std;
#include "smartPointer.h"
#endif // HEADER_H


Код

#include "HEADER.h"

class a
{
public:
    int i;
    a()
    {
        i = 10;
    }
};

int main()
{
   SmrtPoint h = new int;
    cout << *h + 1 <<endl;

    return 0;
}


походу работает, как реализовать потоко безопасность незнаю(пока). правильно?
PM MAIL   Вверх
mes
Дата 25.11.2011, 10:16 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
походу работает,

 smile 

Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
   static int count_s;

один счетчик на все  хранимые объекты.. 


Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
   SmrtPoint(): point_(NULL)
    {
        ++SmrtPoint::count_s;
    }

увелечение счетчика даже если ему ничего не передали  smile 


Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
   SmrtPoint(SmrtPoint *p)

конструктор копирование принимает по ссылке.. 


Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
 virtual ~SmrtPoint()
    {
        --SmrtPoint::count_s;
    }

где удаление хранимого объекта если указатель достиг нуля ?


Цитата(ferz721 @  25.11.2011,  08:26 Найти цитируемый пост)
  int* operator++() throw()..

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






--------------------
PM MAIL WWW   Вверх
bsa
Дата 25.11.2011, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ferz721, а где использование шаблонов? Без них умный указатель не стоит и выеденного яйца. Тем более, что без шаблонов нельзя сделать возможную потокобезопасность и статический полиморфизм...
PM   Вверх
ferz721
Дата 25.11.2011, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bsa вечером

Это сообщение отредактировал(а) ferz721 - 25.11.2011, 12:52
PM MAIL   Вверх
ferz721
Дата 25.11.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mes @ 25.11.2011,  10:16)


Цитата

один счетчик на все  хранимые объекты.. 


как исправить?
PM MAIL   Вверх
bsa
Дата 25.11.2011, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



сделать счетчик общим.
PM   Вверх
mes
Дата 25.11.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

Репутация: 79
Всего: 250



Цитата(bsa @  25.11.2011,  13:00 Найти цитируемый пост)
сделать счетчик общим. 

общим это как раз со static (который и нужно то убрать)  smile  



--------------------
PM MAIL WWW   Вверх
bsa
Дата 25.11.2011, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



mes, ой. что-то я не обратил внимания на static... Увидел что это просто переменная. Естественно, что счетчик должен быть общим для указателей на один и тот же объект, а не для всех объектов одного типа.
PM   Вверх
ferz721
Дата 26.11.2011, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ничево у меня не получаеться, саттера нужно почитать. тогда смогу реишить.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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