Классы. Наследование

Тема в разделе "C/C++/C#", создана пользователем -, 23 янв 2011.

  1. Гость

    Помогите реализовать наследование в классе, не могу до конца понять как это все провернуть
    з.ы. надо использовать переопределение функций и виртуальные функции(с обьяснением полученного результата)

    вот исходный класс, который переделать надо((



    Код (C++):
    #include "stdafx.h"
    #include <string.h>
    #include <iostream>
    using namespace std;

    class NOTE {
    char    name[20];
    char    surname[30];
    int  year_of_birth;
    char tel_number[20];       

    public:
    NOTE() {};//конструктор за замовченням
    ~ NOTE() {};//деструктор за замовченням
    char *get_surname()
    {
    return surname;
    }
    bool operator == (NOTE & n) //перевантаження ператора присвоення
    {
    if ((tel_number,n.tel_number) == 0) return false;
    return true;
    }
    void vvod()//функция вводу
    {
    cout << "Enter name: ";
    cin >> name;
    cout << "Enter surname: ";
    cin >> surname;
    cout << "Enter year of birth: ";
    cin >> year_of_birth;
    cout << "Enter telephone number: ";
    cin >> tel_number;
    }

    void vivod()//функция виводу
    {
    cout << "Name: " << name <<'\n';
    cout << "Surname: " << surname <<'\n';
    cout << "Year of birth: " << year_of_birth <<'\n';
    cout << "Telephone number: " << tel_number <<'\n';
    }
    };

    int main()
    {
    NOTE    mas[3];
    int i;
    char poisk[20];
    for (i = 0; i < 3; i++ )
    {
    mas[i].vvod();
    }

    for( i = 0; i < 3; i++ )
    {
    mas[i].vivod();
    }
    cout<<"____________________________________________________________________________
    ____"
    ;
    cout << "Enter surname to search: "; cin >> poisk;//пошук за призвищем
    for( int i = 0; i < 3; i++ )
    {
    if ( strcmp( mas[i].get_surname(), poisk ) == 0 )
    {
    mas[i].vivod();
    }
    else {cout<<"No people"<<'\n';}
    }
    system( "pause" );
    return 0;
    }
    надеюсь на вашу помощь, самой не разобраться((
     
  2. Rififi

    Rififi Гость

    ксешенька

    в самом простейшем случае сделай так:

    Код (C++):
    struct X
    {
    virtual ~X() {}
    virtual void vvod() = 0;
    virtual void vivod() = 0;
    };

    struct NOTE : public X
    ...
    дальше всё тоже самое
    объяснение результата в двух словах не расскажешь, читай книжки по C++
     
  3. RiCrO

    RiCrO Гость

    Это чисто-виртуальные функции. Используется в том случае, если объекты родительского класса не предназначены для реализации.


    Наследование можно сделать таким образом:

    Код (C++):
    class NOTE {
    char    name[20];
    char    surname[30];
    int  year_of_birth;
    char tel_number[20];       

    public:
    NOTE() {};//конструктор за замовченням
    ~ NOTE() {};//деструктор за замовченням
    ...
    };

    // Наследование
    class BIG_NOTE : public NOTE
    {
    char friends[20];

    public:
    BIG_NOTE() {};
    ~BIG_NOTE() {};
    ...
    };
    Я не знаю что тут трудного. Может вам просто трудно перебороть свою лень в попытке открыть умную книжку и почитать про классы, виртуальные функции и наследование.
     
  4. Гость

    какие книжки можете посоветовать?
    что не читаю-полный бред, написаны по-дурацки
    половина примеров просто не работают
     
  5. ierofant

    ierofant Гость

    Джесс Либерти, Брэдли Джонс. "Освой самостоятельно C++ за 21 день"
     
  6. RiCrO

    RiCrO Гость

    ierofant, для начала этого достаточно. Книга приятна для чтения. Но, к сожалению, не очень много охватывает.

    ксешенька, советую приобрести Роберта Лафоре "Объекто-Ориентированное Программирование в С++" - абсолютно всё ( ну если не все, то почти всё ) про С++. Сам имею и радуюсь. Берите.
     
Загрузка...
Похожие Темы - Классы Наследование
  1. 203
    Ответов:
    11
    Просмотров:
    2.578
  2. vladis222
    Ответов:
    4
    Просмотров:
    1.649
  3. BashOrgRu
    Ответов:
    6
    Просмотров:
    4.143
  4. VladSh
    Ответов:
    22
    Просмотров:
    7.201
  5. Azgor
    Ответов:
    2
    Просмотров:
    1.675

Поделиться этой страницей