• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Guest
  • Дата начала
G

Guest

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

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



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

надеюсь на вашу помощь, самой не разобраться((
 
R

Rififi

ксешенька

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

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

struct NOTE : public X
...
дальше всё тоже самое

объяснение результата в двух словах не расскажешь, читай книжки по C++
 
R

RiCrO

virtual void vvod() = 0; virtual void vivod() = 0;

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


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

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() {};
...
};

Я не знаю что тут трудного. Может вам просто трудно перебороть свою лень в попытке открыть умную книжку и почитать про классы, виртуальные функции и наследование.
 
G

Guest

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

RiCrO

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

ксешенька, советую приобрести Роберта Лафоре "Объекто-Ориентированное Программирование в С++" - абсолютно всё ( ну если не все, то почти всё ) про С++. Сам имею и радуюсь. Берите.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!