Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fraxinus
25 / 25 / 1
Регистрация: 31.05.2011
Сообщений: 199
#1

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

15.02.2014, 12:50. Просмотров 420. Ответов 5
Метки нет (Все метки)

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

Реализация графического интерфейса - C++
Добрый день.Долгое время уже изучаю c++,сейчас надоели консольные приложения,решил научиться делать кнопки и т.д. Почитал как это...

Перегрузка функций. Реализация функций - C++
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее помощью значение выражения z= f(a) +...

Реализация графического интерфейса пользователя в приложениях WinAPI. Ошибка default - C++
Сама программа: // фывфвфыв.cpp: определяет точку входа для приложения. // #include "stdafx.h" #include <windows.h> #include...

Реализация функций - C++
Помогите, пожалуйста, реализовать методы классов (заголовки даны в biTree.g) Я плохо шарю, а завтра сдавать! Очень надо( Дан: biTree.h...

Реализация математических функций - C++
Где можно найти, как реализованы примитивные мат. функции такие, как sqrt, pow, sin, asin, log и другие и сколько примерно тактов...

Реализация перегруженных функций - C++
Нужна помощь по реализации перегруженных функций: int func (int * arr, int length, int number); int func (char * str, char ch); ...

5
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;
}

0
Fraxinus
25 / 25 / 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)
    {
 
    }
};
0
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);
}

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

Добавлено через 26 минут
programina, ведь тоже самое, но без виртуальных функций тоже имеет смысл, верно?
Но тогда я лишусь абстрактного класса
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
15.02.2014, 14:46 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Fraxinus,
Цитата Сообщение от Википедия
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа.
Добавлено через 2 минуты
Цитата Сообщение от Fraxinus Посмотреть сообщение
programina, ведь тоже самое, но без виртуальных функций тоже имеет смысл, верно?
более того, даже если классы не будут наследниками, смысл тоже будет.
1
15.02.2014, 14:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2014, 14:46
Привет! Вот еще темы с ответами:

Классы и реализация функций - C++
Дан класс Class Move { privare: double x; double y; public: //присваивает x, у значения a, b Move(double a=0, double...

Реализация функций из библиотеки math.h - C++
Нужно написать прогу реализующая 4 функции из библиотеки math.h с помощь классов!

Реализация метода штрафных функций - C++
Здравствуйте,нужна очень программа на С++ метода штрафных функции с использование метода Фибоначчи и градиентного метода по правилу...

Реализация мелких функций в hpp - C++
Здравствуйте! Есть шаблон класса Vector с кучей мелких функций, типа сумма, разность, operator+, проч. Вопрос - стоит ли выносить их...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.