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

Реализация функций интерфейса - C++

Восстановить пароль Регистрация
 
Fraxinus
 Аватар для Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
15.02.2014, 12:50     Реализация функций интерфейса #1
Есть класс с прототипами - интерфейс (верно?).
Наследую от него два класса, А и В.
Как мне в этих классах сделать разную реализацию унаследованных прототипов?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 12:50     Реализация функций интерфейса
Посмотрите здесь:

C++ Перегрузка функций. Реализация функций
C++ Реализация функций
C++ Реализация графического интерфейса
Реализация математических функций C++
реализация перегруженных функций в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
15.02.2014, 13:06
  #2

Не по теме:


Можно с помощью виртуального метода (можно и без него)

C++
#include <iostream>
using namespace std;
 
class P
{
public:
    virtual int foo(int a)
    {
        return a;
    }
};
 
 
class C1 : public P
{
public:
    int foo(int a)
    {
        return a*a;
    }
};
 
class C2 : public P
{
public:
    int foo(int a)
    {
        return a*a*a;
    }
};
 
 
int main()
{
    P *p = new P;
    cout << p->foo(5) << endl;
 
    p = new C1;
    cout << p->foo(5) << endl;
 
    p = new C2;
    cout << p->foo(5) << endl;
 
    return 0;
}

Fraxinus
 Аватар для Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
15.02.2014, 13:27  [ТС]     Реализация функций интерфейса #3
programina, большое спасибо.
Реализовать два класса с единым интерфейсом - удовольтворил требованию?
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
34
35
36
37
38
class P//интерфейс
{
public:
    void Foo1();
    void Foo2(char);
};
 
class A : public P
{
public:
    void Foo1()
    {
 
    }
 
    void Foo2(char a)
    {
 
    }
};
 
class B :public P
{
public:
    B(int a)
    {
        //а в этом есть конструктор
    }
    void Foo1()
    {
 
    }
     
    void Foo2(char a)
    {
 
    }
};
programina
15.02.2014, 13:48
  #4

Не по теме:

Цитата Сообщение от Fraxinus Посмотреть сообщение
Реализовать два класса с единым интерфейсом - удовольтворил требованию?
У вас есть сомнения?

C++
#include <iostream>
using namespace std;
 
 
class P
{
public:
    // Абстрактный класс
    virtual void Foo1() = 0;
    virtual void Foo2(char) = 0;
};
 
 
class A : public P
{
public:
    virtual void Foo1()
    {
        cout << "A::Foo1" << endl;
    }
    virtual void Foo2(char a)
    {
        cout << "A::Foo2" << endl;
    }
};
 
 
class B : public P
{
public:
    B(int a)
    {
        //а в этом есть конструктор
    }
    virtual void Foo1()
    {
        cout << "B::Foo1" << endl;
    }
    virtual void Foo2(char a)
    {
        cout << "B::Foo2" << endl;
    }
};
 
 
int main()
{
    P *p;
    A a;
    B b(0);
 
    p = &a;
    p->Foo1();
    p->Foo2(0);
 
    p = &b;
    p->Foo1();
    p->Foo2(0);
}

Fraxinus
 Аватар для Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
15.02.2014, 14:41  [ТС]     Реализация функций интерфейса #5
Почему-то нет кнопки "спасибо"...
У меня нет сомнений, у меня есть незнания)
Вопрос: зачем виртуальные функции?

Добавлено через 26 минут
programina, ведь тоже самое, но без виртуальных функций тоже имеет смысл, верно?
Но тогда я лишусь абстрактного класса
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
15.02.2014, 14:46     Реализация функций интерфейса #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Fraxinus,
Цитата Сообщение от Википедия
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа.
Добавлено через 2 минуты
Цитата Сообщение от Fraxinus Посмотреть сообщение
programina, ведь тоже самое, но без виртуальных функций тоже имеет смысл, верно?
более того, даже если классы не будут наследниками, смысл тоже будет.
Yandex
Объявления
15.02.2014, 14:46     Реализация функций интерфейса
Ответ Создать тему
Опции темы

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