Backdoor nuts


ужос

14 Дек 2006, 15:18

Ужас... сессия - ужасная весч, даже зачётная... скорей бы с этим отделаться и отдохнуть... а ща только зачетная сессия идёт, а впереди ещё ГОС по математике, экзамены по физике которую я не оч. понимаю, тфкп которую я вроде понимаю, но не полностью... хотя наверное может быть и хуже...

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

Страница 1 из 1
Автор Сообщение

Doctor_Mozg

СообщениеДобавлено: 14 Дек 2006, 20:43    Заголовок сообщения:
[Цитата]

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

Обязательно почитай на эту тему Страуструпа "Язык программирования С++", издание 3е. Там всё разложено по полочкам Улыбочка Глава 12-13 по-моему Улыбочка И вообще считаю что любой программист на С++ должен знать ээту книжку наизусть Улыбочка

AAsad

СообщениеДобавлено: 14 Дек 2006, 23:03    Заголовок сообщения:
[Цитата]

Сегодня заходил в книжный увидел эту книгу, облизнулся и положил обратно...:)

Гость

СообщениеДобавлено: 15 Дек 2006, 11:25    Заголовок сообщения:
[Цитата]

самый 3.14159здетс это урматы

chaser

СообщениеДобавлено: 30 Дек 2006, 14:37    Заголовок сообщения:
[Цитата]

В электронном варианте можно найти 3-е издание, хотя гугл в основнов выдает второе.

Виртуальные функции -- для полиморфизма Улыбочка

Классический пример:

// Абстрактный базовый класс для всех геометрических фигур
class Shape {
  public:
    virtual void draw() = 0; //нарисовать фигуру на экране
    virtual ~Shape() {}
};

// окружность
class Circle : public Shape
{
  protected:
    int x,y; // координаты центра
    int r; // радиус

  public:
    virtual void draw() {
       //рисуем на экране окружность
    }

    //конструктор
    Circle (int x, int y, int r) : x(x), y(y), r(r) { }
};

// прямоугольник
class Rect : public Shape
{
   protected:
      int x1,y1,x2,y2; //координаты углов

   public:
      virtual void draw() {
         //рисуем на экране прямоугольник
      }

      // конструктор
      Rect(int x1, int y1, int x2, int y2)
        : x1(x1), y1(y1), x2(x2), y2(y2) { }
};

// и так далее
// ...

// где-то в теле программы

//создаем вектор из различных фигур
std::vector<Shape> shapes;

shapes.push_back(new Circle(50,60,30));
shapes.push_back(new Rect(3,10,40,15));
//...
shapes.push_back(new Circle(100,70,35));
//...

// рисуем все фигуры на экран
for ( std::vector<Shape>::iterator i = shapes.begin();
      shapes.end() != i; ++i )
{
    i->draw();
}




почему-то тут упорно не отображается звездочка ( * ).
там вектор не из Shape, а из Shape * должен быть.

Показать сообщения:   
Страница 1 из 1