Другие языки программирования и технологии
Что такое полиморфизм? Только можно на примере а не теорию?
И ещё я нашёл наглядный пример, это правильно? class ClassOne { protected: int num; public: ClassOne(){num=0;}; void func(){num++; cout << num << "\n";}; }; class ClassTwo : public ClassOne { public:
class Base
{
public:
virtual void f() = 0;
};
class One : public Base
{
public:
virtual void f() { cout << "One::f()\n";};
};
class Two : public Base
{
public:
virtual void f() { cout << "Two::f()\n";};
};
void main()
{
Base *p;
p = new One
p->f();
delete (One*)p;
p = new Two;
p->f();
delete (Two*)p;
}
{
public:
virtual void f() = 0;
};
class One : public Base
{
public:
virtual void f() { cout << "One::f()\n";};
};
class Two : public Base
{
public:
virtual void f() { cout << "Two::f()\n";};
};
void main()
{
Base *p;
p = new One
p->f();
delete (One*)p;
p = new Two;
p->f();
delete (Two*)p;
}
Нет, это НЕ полиморфизм.
Полиморфизм - это когда одно и то же выражение вызывает разные функции, в зависимости от текущего значения переменной (немного не верно, но ты же сам просил коротко) .
Пример использования полиморфизма (в твоем примере не сработает, объявлять надо виртуальные функции!) :
class ClassOne{virtual void f(){count<<"ClassOne";}
class ClassTwo:ClassOne{void f(){count<<"ClassTwo";}
ClassOne *one=new ClassOne;
ClassTwo *two=new ClassTwo;
ClassOne *three=two;//!
one->f();//выведет "ClassOne"
two->f();//выведет "ClassTwo"
three->f();//выведет "ClassTwo"!
three=one;
three->f();//выведет "ClassOne"!!!!
Полиморфизм - это когда одно и то же выражение вызывает разные функции, в зависимости от текущего значения переменной (немного не верно, но ты же сам просил коротко) .
Пример использования полиморфизма (в твоем примере не сработает, объявлять надо виртуальные функции!) :
class ClassOne{virtual void f(){count<<"ClassOne";}
class ClassTwo:ClassOne{void f(){count<<"ClassTwo";}
ClassOne *one=new ClassOne;
ClassTwo *two=new ClassTwo;
ClassOne *three=two;//!
one->f();//выведет "ClassOne"
two->f();//выведет "ClassTwo"
three->f();//выведет "ClassTwo"!
three=one;
three->f();//выведет "ClassOne"!!!!
Азамат Адылбеков
есть ошибка:
#include <iostream> // из стандартного каталога включаемых файлов
using namespace std;
class Classоne
{
public:
virtual void f()
{
coutf(); //выведет "ClassTwo"!
three=оne;
three->f(); //выведет "Classоne"!!!!
system("PAUSE");
}
#include <iostream> // из стандартного каталога включаемых файлов
using namespace std;
class Classоne
{
public:
virtual void f()
{
coutf(); //выведет "ClassTwo"!
three=оne;
three->f(); //выведет "Classоne"!!!!
system("PAUSE");
}
самый простой пример
int fun(int d, int k)
{
return d + k;
}
double fun(double d, int k)
{
return d * k;
}
в зависимости от типа параметров функции компилятор сам выберет нужную
int fun(int d, int k)
{
return d + k;
}
double fun(double d, int k)
{
return d * k;
}
в зависимости от типа параметров функции компилятор сам выберет нужную
Николай Волобуев
Это не совсем полиморфизм, это лишь перегрузка ф-ций.
В принципе да, правильно, довольно тяжело объяснить что такое полиморфизм. В этом примере показана лишь перегрузка ф-ций. Вот тут очень хорошо, понятно и с примерами, почитай http://programmersclub.ru/38/
Азамат Адылбеков
Ну... окей можно и теорией, хоть как-то на пальцах, кроме перегрузки функций, что полиморфизм из себя представляет?
PS
main не может быть void
правильнее писать
int main(){
return 0;
}
main не может быть void
правильнее писать
int main(){
return 0;
}
Азамат Адылбеков
а почему так?
я не спорю, код не мой, просто интересуюсь
я не спорю, код не мой, просто интересуюсь
Похожие вопросы
- Можете объяснить мне в простых терминах ну или с коротким примером Полиморфизм?
- Что такое полиморфизм? на примере С++
- Инкапсуляция, полиморфизм Обясните по проще что такое инкапсуляция и полиморфизм?
- Вопрос про полиморфизм в С++.
- Как полиморфизм модефецирует принцип наследования?
- объясните глупой что такое полиморфизм в с++.скока всего прочла и так и не могу понять((((
- ООП: что такое инкапсуляция, абстракция, полиморфизм и наследование?
- Обьясьните пожалуйста кто-нибудь, что такое "Полиморфизм"и "Инкапсуляция"
- что такое полиморфизм?
- Основные принципы ООП: инкапсуляция, полиморфизм, наследование Объясните пожалуйста простыми словами?
Спасибо!
struct Obj
{
Base *p;
Obj *next;
} *firstObj;
Obj *lastObj;
и будет ли она актуальна если мне нужно разные производные объекты, которые двигаются - проверять на коллизии между собой прогоняя через этот список?
(Я просто уже имел печальный опыт с использованием кучи - большое падение продуктивности)