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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2008, 17:51   #11
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

если виртуальная, то:
Код:
ClassOne *One = new ClassOne;
ClassOne *Two = new ClassTwo;
One->func();  // метод класса ClassOne
Two->func(); // метод класса ClassTwo
если не виртуальная,то:
Код:
ClassOne *One = new ClassOne;
ClassOne *Two = new ClassTwo;
One->func();  // метод класса ClassOne
Two->func(); // метод класса ClassOne
pu4koff вне форума Ответить с цитированием
Старый 27.09.2008, 20:15   #12
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Короче вот откопал нормальный пример:
Код:
#include <iostream.h>

class Shape {
public:
    virtual void Paint() = 0;
};

class Circle : public Shape {
public:
    void Paint(){cout <<"Painting circle..."<< endl;};
};

class Rectangle : public Shape {
public:
    void Paint(){cout <<"Painting rectangle..."<< endl;};
};

class Square : public Shape {
public:
    void Paint(){cout <<"Painting square..."<< endl;};
};

void main(){
    Shape *ShapeArray[3];
    ShapeArray[0] = new Circle;
    ShapeArray[1] = new Rectangle;
    ShapeArray[2] = new Square;
    ShapeArray[0]->Paint();
    ShapeArray[1]->Paint();
    ShapeArray[2]->Paint();
};
Что тут является полиморфизмом?

Последний раз редактировалось Scratch; 27.09.2008 в 20:20.
Scratch вне форума Ответить с цитированием
Старый 27.09.2008, 20:53   #13
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Scratch Посмотреть сообщение
Короче вот откопал нормальный пример:
Код:
#include <iostream.h>

class Shape {
public:
    virtual void Paint() = 0;
};

class Circle : public Shape {
public:
    void Paint(){cout <<"Painting circle..."<< endl;};
};

class Rectangle : public Shape {
public:
    void Paint(){cout <<"Painting rectangle..."<< endl;};
};

class Square : public Shape {
public:
    void Paint(){cout <<"Painting square..."<< endl;};
};

void main(){
    Shape *ShapeArray[3];
    ShapeArray[0] = new Circle;
    ShapeArray[1] = new Rectangle;
    ShapeArray[2] = new Square;
    ShapeArray[0]->Paint();
    ShapeArray[1]->Paint();
    ShapeArray[2]->Paint();
};
Что тут является полиморфизмом?
если не научишься сам искать ответы на свои вопросы, то ты всю жизнь будешь спрашивать.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 27.09.2008, 21:06   #14
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от alexinspir Посмотреть сообщение
если не научишься сам искать ответы на свои вопросы, то ты всю жизнь будешь спрашивать.
Ну да, конечно) только я вот уже недели две ищу нормальное объяснение что такое полиморфизм, может если еще месяц поищу тогда точно найду.


p.s. Видимо я не до конца понимаю суть функции
ClassOne *One = new ClassTwo;
Как такое возможно? Как могут в одной переменной фигурировать два разных класса?


p.s.s.
это:
Код:
ClassOne *One = new ClassOne;
тоже самое, что это:
Код:
ClassOne *One, lala; One = &lala;
???

Последний раз редактировалось Scratch; 27.09.2008 в 21:24.
Scratch вне форума Ответить с цитированием
Старый 27.09.2008, 21:26   #15
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Scratch Посмотреть сообщение
Как такое возможно? Как могут в одной переменной фигурировать два разных класса?
один класс является порожденным от второго.

Цитата:
Сообщение от Scratch Посмотреть сообщение
Код:
ClassOne *One = new ClassOne;
Код:
ClassOne *One, lala; One = &lala;
new - динамически выделяет память.

незнаю как на твой код будет реагировать компилятор, но вроде это почти одно и тоже.
в первом случае ты создаешь указатель на ClassOne и выделяешь под него память.
во втором ты создаешь указатель на ClassOne, экземпляр ClassOne, и присваиваешь указателю адресс экземпляра.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 27.09.2008 в 21:32.
alexinspir вне форума Ответить с цитированием
Старый 27.09.2008, 21:30   #16
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от alexinspir Посмотреть сообщение
один класс является порожденным от второго.
Тогда получается я могу сделать так:
Код:
ClassOne *Two;
ClassTwo lala;
Two=&lala;
и это будет тоже самое, что:

Код:
ClassOne *Two = new ClassTwo;
??
Scratch вне форума Ответить с цитированием
Старый 27.09.2008, 21:34   #17
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Scratch Посмотреть сообщение
Тогда получается я могу сделать так:
Код:
ClassOne *Two;
ClassTwo lala;
Two=&lala;
и это будет тоже самое, что:

Код:
ClassOne *Two = new ClassTwo;
??
предыдущий пост отредактил, взгляни на него.

да, можешь так делать.

нет, не тоже самое.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 27.09.2008, 21:35   #18
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

в принципе суть одна будет
pu4koff вне форума Ответить с цитированием
Старый 27.09.2008, 21:37   #19
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
в принципе суть одна будет
ну да, тока первое будет есть больше памяти.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 27.09.2008, 21:49   #20
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Блин, вообще не представляю где такое можно применить..
Scratch вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
П Р О С Т Е Й Ш И Й пример 3D aesoem Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 16.07.2008 16:54
Пример из учебника valerij Microsoft Office Excel 11 20.06.2008 15:43
Пример патчинга Д'якон Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 17.02.2008 19:27
пример парсинга Stanislav Общие вопросы Delphi 4 14.01.2008 03:48