Primer 1 Лекция 13.
#include <iostream>
#include <string.h>
using namespace std;
{
public:
book(char *, char *, int);
int show_book();
private:
char title [64];
char author[64];
int pages;
};
book::book(char *title, char *author, int pages)
{
strcpy(book::title, title);
strcpy(book::author, author);
book::pages = pages;
}
int book::show_book()
{
cout << "Название: " << title << endl;
cout << "Автор: " << author << endl;
cout << "Страниц: " << pages << endl;
}
class library_card: public book
{
public:
library_card(char *, char *, int, char *, int);
int show_card();
private:
char catalog[64];
int checked_out;
};
library_card::library_card(char *title, char *author, int pages, char *catalog, int checked_out): book(title, author, pages)
{
strcpy(library_card::catalog, catalog);
library_card::checked_out = checked_out;
}
int library_card::show_card()
{
show_book();
cout << "Каталог: " << catalog << endl;
if (checked_out) cout << "Статус: проверена" << endl;
else cout << "Статус: свободна" << endl;
}
int main()
{
system("chcp 1251");
library_card card("C++", "Подбельский", 272, "101СРР", 1);
card.show_card();
system("pause");
}
highlightSyntax('cpp_22077','cpp'); Конструктор library _card вызывает конструктор класса book для инициализации элементов класса book. Использование функции-элемента show_book класса book внутри функции show_card. Поскольку класс library_card наследует методы класса book, функция show_card может вызвать этот метод (show_book) без помощи оператора точки, как если бы этот метод был методом класса library_card.
|
|
13.2. Защищенные элементы.
При изучении определений базовых классов можно встретить элементы, объявленные как public, private и protected (общие, частные и защищенные). Производный класс может обращаться к общим элементам базового класса, как будто они определены в производном классе. Производный класс не может обращаться к частным элементам базового класса напрямую. Для обращения к таким элементам производный класс использует интерфейсные функции. Защищенные элементы базового класса занимают промежуточное положение между частными и общими. Если элемент является защищенным, объекты производного класса могут обращаться к нему, как будто он является общим. Для оставшейся части программы защищенные элементы являются как бы частными. Единственный способ, с помощью которого программы могут обращаться к защищенным элементам, состоит в использовании интерфейсных функций. Следующее определение класса book использует метку protected, чтобы позволить классам, производным от класса book, обращаться к элементам title, author и pages напрямую, используя оператор точку: