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

Классы / наследование / полиморфизм - C++

Восстановить пароль Регистрация
 
rxfiro
 Аватар для rxfiro
25 / 25 / 1
Регистрация: 05.12.2008
Сообщений: 196
15.07.2010, 22:23     Классы / наследование / полиморфизм #1
Классы / наследование / полиморфизм

Не по теме:

Решите, если несложно, программа вроде довольно простая..., но с с++, я пока неочень...



Добавлено через 36 минут
вот что я написал..., а с инициализацией и полиморфизмом непонятно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class A
{
 
}
class B: A
{
    void print()
    {
        fot(int i=0,i<10,++i)
          cout<<M[i];
    }
}
 
class C: public A
{
    void obnulenie()
    {
        for(i=0,i<10,++i)
            if (M[i]<0)
                M[i]=0;
    }
}
 
class D: C
    void obnulenie2()
    {
        for(i=0,i<10,++i)
        {i=i++;
         M[i]=0;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 22:23     Классы / наследование / полиморфизм
Посмотрите здесь:

ООП Полиморфизм Наследование C++
Наследование и полиморфизм. C++
C++ Наследование и полиморфизм
C++ Наследование и полиморфизм...
C++ Наследование и полиморфизм классов
undefined reference (наследование и полиморфизм) C++
C++ Полиморфизм инкапсуляция и наследование(ООП)
Наследование, полиморфизм C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rxfiro
 Аватар для rxfiro
25 / 25 / 1
Регистрация: 05.12.2008
Сообщений: 196
16.07.2010, 00:55  [ТС]     Классы / наследование / полиморфизм #2
вот.., чуть доработал, разобрался с полиморфизмом...,
а инициализация массива в классе А[N], все еще осталась под вопросом... =(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class A
{
public:
virtual void S()
}
class B: A
{
    void print()
    {
        fot(int i=0,i<N,++i)
          cout<<M[i];
    }
}
 
class C: public A
{
    void S()
    {
        for(i=0,i<N,++i)
            if (M[i]<0)
                M[i]=0;
    }
}
 
class D: C
    void S()
    {
        for(i=0,i<N,++i)
        {i=i++;
         M[i]=0;
        }
    }
}
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
16.07.2010, 01:29     Классы / наследование / полиморфизм #3
я так понимаю надо сделать чтобы в классе А был обьявлен сам массив...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class A{
public:
   int N;
   int *M;
   A():N(0),M(NULL){} // конструктор по умолчанию, тут же инициализация N
   A(int size):N(size)   // конструктор, тут инициализируется N, выделяется память под массив M
   {
       M = new int[N];  // когда управление доходит до этого места N уже инициализировано
   }
   ~A()                  // деструктор, здесь освобождается память, выделенная под массив.
   {
      if (M != NULL) delete [] M;
   }
};
// при наследовании надо не забывать о конструкторе класса-предка
// деструктор класса-предка вызовется автоматически
class B: public A{
//...
    B():A(){}
    B(int size):A(size){}
//...
};
и все меторды надо обьявить public

Добавлено через 7 минут
а полиморфзм можно показать следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class A{
public:
    virtual void print()
    {
         cout << "some thing\n";
    }
};
class B:public A{
public:
    virtual void print()
    {
         cout << "some thing else\n";
    }
};
int main()
{
    A *a1 = new A;
    A *a2 = new B;
    a1->print();   // выведет на экран some thing
    a2->print();   // выведет на экран some thing else
}
только надо оформить этот пример так, чтобы он соответствовал заданию
если обьявляешь некоторые функции виртуальными то для них создается специальная таблица, если наследуешь от класса, содержащего виртуальные функции, то функции в потомке обьявленные виртуальными и совпадающие по сигнатуре с виртуальными функцииями предка, перезаписываются в таблице виртуальных функций потомка, и вызываются вместо вирт. ф-ций предка.
Yandex
Объявления
16.07.2010, 01:29     Классы / наследование / полиморфизм
Ответ Создать тему
Опции темы

Текущее время: 22:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru