Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_S_Exem.doc
Скачиваний:
3
Добавлен:
15.09.2019
Размер:
190.46 Кб
Скачать
  1. Расскажите историю появления и развития языка С++, этапы принятия стандарта С/C++.

В 1972 разработали язык С. Разработчики – Кен Томпсон и Деннис Ритчи. В 1989 стандарт был завершен и утвержден. Именно эту версию часто наз. ANSI C или C89. Последний стандарт был принят в 1999 и называется C99. Язык программирования C++ был разработан Бьерном Страуструпом в 1979. Работа над стандартом C++ была начата в 25 января 1994. Принят стандарт в 1998 и включает библиотеку Stl (библиотека стандартных шаблонов) разработанную Александром Степановым. Последний стандарт принят в 2003г.

  1. Запишите структуры классической С++ - программы, приведите запись общего вида программы, объясните назначение каждой части.

директива препроцессора #include <iostream>

Объявления функций using namespace std;

Описание переменных глобальных и констант

Функция main(параметры){ int main () {

Локальных переменных и констант, операторы count <<”hello and die”; return 0;

}}

  1. Перечислите типы данных С++, назовите правила задания имен в С++, запишите общий синтаксис объявления переменной, константы, дайте определение указанным понятиям, приведите примеры объявления переменных и констант разных типов в разных системах исчисления.

Тип данных определяет:

  • Внутреннее представление данных в памяти комп.

  • Множество значений которые могут принимать величины этого типа

  • Операции и функции, которые можно применять к величинам этого типа

Для описания основных типов определены следующие ключевые слова:

Int (целый)

Char (символьный)

Wchar_t (расширенный символьный)

Bool (логический)

Float (вещественный)

Double (вещественный с двойной точностью)

Существует четыре спецификатора типа уточняющих внутреннее представление и диапазон значений стандартных типов:

- short (короткий)

- long (длинный)

- signed (знаковый)

- unsigned (без знаковый)

Кроме перечисленных, к основным типам языка относится тип void, но множество значений которого пусто.

  1. Назовите арифметические, логические, битовые операторы, операторы отношения и комбинированные операторы, приведите способ их записи в контексте языка С++, поясните назначение и приведите примеры использования.

Логическое отрицание (!) дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю.

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

Операция деления применима к операндам арифметического типа.(/ и %).

Поразрядная конъюнкция или поразрядное И (&) – бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1.

Поразрядная дизъюнкция или поразрядное ИЛИ (| )– бит результата равен 1 тогда, когда соответствующий бит хотя бы одного из операндов равен 1.

Поразрядное исключающее ИЛИ (^ )– бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов равен 1.

  1. Назовите виды операторов разветвления, приведите синтаксис их записи на языке С++, поясните назначение и укажите, в каких ситуациях какую конструкцию рационально использовать, приведите примеры.

if ( выражение) оператор_1; [else оператор_2;] if (а < 0) b = 1;

switch ( выражение ){ switch (op){

case константное_выражение_1: [список_операторов_1] case ‘+’ : res = a+b; break

[default: операторы ]}

  1. Назовите виды операторов цикла, приведите синтаксис их записи на языке С++, поясните назначение и укажите, в каких ситуациях какую конструкцию рационально использовать, приведите примеры.

while ( ) оператор; цикл может не выполнится ни разу.

do {оператор} while (выражение);Используется когда цикл должен быть выполнен хотя бы 1 раз

For (int i = 0 ; i < 10 ; i++) используется когда известно количество циклов

  1. Перечислите операторы передачи управления языка С++, дайте им характеристику, приведите примеры использования.

оператор безусловного перехода goto;

оператор выхода из блока break;

оп перехода к следующей итерации цикла continue;

оператор возврата из функции return.

  1. Перечислите основные математические функции языка С++, поясните назначение, особенности подключения и использования, приведите примеры.

Для подключения #include <cmath>.

sqrt(x), log(x), abs(x), cos(x), sin(x), tan(x), pow(x,y), acos(x) asin(x), exp(x), fabs(x),

  1. Поясните, каким образом осуществлять потоковый ввод/вывод информации на языке С++, назовите объекты, предназначенные для потокового ввода/вывода, основные методы, поясните назначение, особенности подключения и использования, приведите примеры.

#include <iostream> Поток - механизм преобразования значений различного типа в последовательность символов (вывод) и наоборот (ввод), в значение переменной. Помещение (направление) данных в поток вывода осуществляется с помощью оператора << который также иногда называют экстрактор (extractor).

оператор << осуществляет вывод в поток cout

оператор >> осуществляет ввод в поток cin.

  1. Назовите функции, предназначенные для форматного ввода/вывода информации библиотеки cstdio, приведите синтаксис их записи на языке С, поясните особенности подключения и использования, приведите примеры.

Для форматного ввода/вывода информации библиотеки cstdio предназначены функции scanf и printf. Подключаются функции с помощью библиотеки stdio.h

#incluse <stdio.h>

int main () {

printf(“Учимся программировать\n”);

return 0}

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

В языке С строка представляет собой массив символов, заканчивающийся нуль-символом. Нуль-символ – это символ с кодом, равным 0, что записывается в виде управляющей последовательности ‘\0'.

В языке С++ есть две возможности работы со строками:

- используя библиотечные функции языка C (заголовочный файл <string.h> или <cstring>);

- используя библиотечный класс string.Строку можно инициализировать (задать начальное значение) строковым литералом (т.е. строковой константой):

Char str [10] = “Hello”;

Если строка при определении инициализируется, ее размерность можно не записывать:

char str [] = “Hello”; /* выделено и заполнено 6 байт.

Для ввода строк с клавиатуры используются две функции:

- scanf () – вводит строку до первого появления символа «пробел»;

- gets () - вводит строку содержащую пробелы до нажатия клавиши ENTER.

Для вывода строк используются функции:

- printf () – после вывода строки не переводит курсор на начало следующей строки;

- puts () – после вывода строки автоматически переводит курсор на начало следующей строки.

Обе выводят строку до появления нуль-символа.

#include <stdio.h>

#include <conio.h>

int main ( ) {

const int n=30;

char str1 [n],str2 [n];

gets (str1); //ввод строки с пробелами

scanf (“%s”, str2); //ввод до пробела

puts (str1); //вывод с переводом курсора

printf (“%s”, str2); //вывод без перевода

getch

return 0;}

  1. Приведите синтаксис записи пользовательской функции на языке С++. Поясните, чем отличается описание функции от объявления, что представляет собой список фактических и формальных параметров. Приведите пример пользовательской функции, имеющей список параметров и возвращающей значение, покажите, как эту функцию можно вызвать.

[класс] тип имя ([список параметров]) [throw(исключения)]{ тело функции }

Класс видимость extern – видимость везде, static – в модуле.

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

Список параметров определяет величины, которые передаются в функцию.

#include < iostream >

using namespace std;

float maxsimum (float);

int main( ) {

float x, y, z; cout << "Введите числа:\n”;

cin >> x

return 0;}

  1. Дайте определение понятию inline-функции языка С++, поясните, в каких случаях целесообразно использовать функции данного вида, запишите синтаксис объявления, приведите пример реализации и использования inline-функции.

Inline-функцияэто функция с модификатором ilnline, код которой компилятор может встроить в место вызова функции. При использовании inline-функций программа становится более быстрой, но при этом может стать более громоздкой (увеличивается объем). Это целесообразно выполнять для коротких функций.

Формат определения inline-функции:

Inline тип имя ([список параметров]) {тело функции}

Например: inline int inline function (int x) { return x*x*x}

  1. Дайте определение рекурсивной функции на языке С++, назовите этапы разработки рекурсивной функции, поясните, в чём заключается особенность работы со стеком при вызове рекурсивной функции, запишите пример рекурсивной функции.

Рекурсивной называется функция, которая вызывает саму себя. Такая рекурсия называется прямой. Существует еще косвенная рекурсия, когда две или более функций вызывают друг друга.

long fact( long n) {

if ( n == 0 || n == 1 ) return 1;

return ( n* fact( n n-1) );}

  1. Назовите отличие процедуры от функции, запишите синтаксис void-функции на языке С++, принимающей в качестве параметров ссылки, поясните, в чём состоит разница при передаче аргументов по значению и по ссылке. Приведите пример описания и использования void-функции, принимающей в качестве параметров ссылки.

Функция, в отличие от процедуры, обязательно возвращает значение.

тип имя ([список параметров]) { тело функции } (void print (float r)

{

cout << "Diametr kruga raven " << 2 * r << endl;

cout << "Dlina okrushnosti ravna " << 2 * 3.14159 * r << endl;

cout << "Ploshad' kruga ravna " << 3.14159 * r * r << endl;

}

Для объявления ссылок вне функции может использоваться описатель ссылки:

int i = 0;

int &ir = i; // ir является псевдонимом i

ir = 2; // то же, что i = 2

Описатель ссылки может также использоваться для объявления в функции параметров типа ссылки:

void func1 (int i);

void func2 (int &ir); // ir имеет тип "ссылка на int"

...

int sum=3;

func1(sum); // sum передается по значению

func2(sum); // sum передается по ссылке

  1. Дайте определение понятию перегруженной функции, поясните, в каких случаях целесообразно использовать перегрузку, запишите синтаксис объявления на языке С++, приведите пример реализации и использования перегруженных функций.

Использование нескольких функций с одним и тем же именем, но различными типами параметров, называется перегрузкой функций. Чтобы избежать дублирования функции, C++ позволяет вам определять несколько функций с одним и тем же именем. Перегрузка функций позволяет вам использовать одно и то же имя для нескольких функций с разными типами параметров. Для перегрузки функций просто определите две функции с одним и тем же именем и типом возвращаемого значения, которые отличаются количеством параметров или их типом.

#include <iostream.h>

int add_values(int a,int b)

{ return(a + b); )

int add_values (int a, int b, int c)

( return(a + b + c);)

void main(void)

{ cout << "200 + 801 = " << add_values(200, 801) << endl;

cout << "100 + 201 + 700 = " << add_values(100, 201, 700) << endl; }

  1. Дайте определение понятию шаблона функции, поясните, в каких случаях целесообразно использовать шаблоны функций, запишите синтаксис объявления на языке С++, приведите пример реализации и использования шаблона функции.

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

template <class|typename Туре> template <class Т> Т mах(Т а, Т b)

заголовок {{ if (а > b) return(а);

тело функции else return(b);}}

  1. Дайте определение понятию шаблона класса, поясните, в каких случаях целесообразно использовать шаблоны классов, запишите синтаксис объявления на языке С++, приведите пример реализации и использования шаблона класса.

Класс, который абстрагируется от типа хотя бы одного своего члена, называется шаблонами классов. Если возникает необходимость создавать подобные функции, отличающиеся только используемыми типами, то может возникнуть необходимость и создания общих классов. А если так, то ваши программы могут определять шаблоны классов.

template < class Туре > template<class T> class array

class имя_класса {{ public:

}; array(int size);

private:

T *data;};

  1. Дайте определение понятию указателя, запишите синтаксис объявления, назовите операции, которые допустимо использовать применительно к указателям, приведите примеры инициализации указателей разных типов и операций, проводимых с ними.

Указатель – переменная, которая предназначена для хранения адресов областей памяти. тип *имя; int I ; int *pi char *cp(на переменную) const int *pci(цел. Константу) int *iparray[5]. Операции с указателями разадресация(*(* p = 'Ю'; a = *p;) присваивание сложение с константой вычитание(shot * p = new shot [5]; p++;) инкремент декремент сравнение приведение типов.

  1. Назовите операторы, предназначенные для выделения памяти под переменную в процессе работы программы и освобождения памяти, приведите способ их записи в контексте языка С++, поясните порядок динамического выделения и освобождения памяти под переменные и массивы, приведите примеры.

int *n=new int; int *m=new int(10). int *q=new int[10] Тут new выполняет выделение из памяти под 10 величин типа int (маисва) и записывает адрес начала этого участка в переменную q которая трактуется как имя массива.

Освобождение памяти выделенной с помощью операции new выполняется с помощью операции delete. Delete n; delete m; delete []q

  1. Перечислите виды массивов в контексте языка С++, запишите синтаксис их объявления. Поясните, в чём состоят особенности инициализации и использования массивов разных видов, приведите примеры.

Массивом называется последовательность данных одного типа с именем. общим именем. тип_элементов имя_массива [размерность]; int a [8]; int b[6][6]. В ступенчатых массивах количество элементов в разных строках может различаться. тип [][]имя_массива;

int [][] a = new int [2][]; 0 строка массив из 3 элементов a[0]=new int[3], 1 строка массив из 5 a[1]=new int[5]; 2 строка массив из 6 a[2]=new int[6];

  1. Поясните, что представляет собой поток, для чего используется, назовите виды потоков, приведите способ их записи в контексте языка С++, запишите примеры использования потоков при работе с файлами.

Поток - механизм преобразования значений различного типа в последовательность символов (вывод) и наоборот (ввод), в значение переменной. Помещение (направление) данных в поток вывода осуществляется с помощью оператора << который также иногда называют экстрактор (extractor). вывести count <<”введите число”; ввода sin >>x; Поток текстовый режим(поток записывает и читает из файла текстовые строки) и бинарный (поток записывает и читает данные любого типа). Потоки – входные, выходные, двунаправленные. Потоки – стандартные , файловые , строковые.

#include <iostream> ios::out(откр. Для записи)

#include <fstream> ios::app(добав. В конец файла)

int main() {

const int n=240;

char str[n];

ifstream fin("test.txt",ios::in(чтение) | ios::nocreate(не сущетвует выдать ощибку));

if (!fin) {

cout << "ERROR";

return 1;}

  1. Запишите имена функций, предназначенных для ввода/вывода в файл в контексте языка с, поясните их назначение, особенности подключения и использования, приведите примеры.

Сначала надо создать указатель на переменную типа FILE:FILE FILE*FILE. FILE *fopen (const char *fname, const char *mode);

Прототипы функций для работы с файлами содержатся в заголовочном файле <stdio.h>. Запись и считывание данных из файла осуществляется следующими функциями:fputc(символ в файл) fputs(строку в файл) fgetc(символ из файла) fgets(строку из файла) printf(форматированный ввод) fscanf(чтение из ф в соответствие с форматом).

fscanf(in, "%c", &c);

printf("%c\n", c);

out=fopen("text.txt","w");

fputs(str,out); // пишем строку в файл

fclose(out);

  1. Поясните, что представляет собой такой тип данных, как структура, запишите синтаксис объявления структуры, приведите примеры инициализации и использования.

Структуры в С++ используются для логического и физического объединения данных произвольных типов, так же как массивы служат для группирования данных одного типа.

struct <имя_структуры> { struct A{

тип (элементы) структуры double x;};

Для инициализации структур значения ее элементов перечисляются в фигурных скобках worker worker; worker={“aaa”,25};

  1. Перечислите основные принципы ооп, дайте определение каждому понятию, приведите примеры возможных вариантов реализации обозначенных принципов.

Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования.

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

Наследование - это процесс, посредством которого один объект может приобретать свойства другого (наследование классов).

  1. Поясните, что представляет собой такой тип данных, как класс, запишите синтаксис объявления класса в контексте языка С++, приведите пример определения класса.

Класс – абстрактный тип данных, определенный пользователем и представляет собой модель реального объекта в виде данных и функций.

Class <name>{ Class worker

private: private:

<Скрытые элементы> char fio[30];

Public: void getdata() void putdata() const;

<описание доступных>};

  1. Назовите компоненты, которые могут входить в определение класса, поясните их назначение, запишите синтаксис объявления в рамках определения класса в контексте языка С++, приведите пример реализации.

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

Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. При описании класса в его заголовке перечисляются все классы, являющиеся для него базовыми. Возможность обращения к элементам этих классов регулируется с помощью ключей доступа private, protected и public.

class имя : [private | protected | public] базовый класс

{тело};

Class <name>{ Class worker

private: private:

<Скрытые элементы> char fio[30];

Public: void getdata() void putdata() const;

<описание доступных>};

  1. Поясните, что представляет собой объект, запишите синтаксис объявления в контексте языка С++, назовите способы передачи объекта в функцию в качестве параметра.

Конкретные переменные типа <<класс>> наз. Объектами класса. Доступ к элементам объекта аналогичен доступу к полям структуры. Для этого используется операция . при обращении к элементу через имя объекта и операция -> при обращении через указатель.

Int main() {

Worker w; объявление объекта класс воркер

w.getdata(); вызываем метод

w.putdata();

return 0;}

  1. Поясните, что представляет собой указатель this в контексте языка С#, запишите способы обращения к свойствам и методом объекта с использованием данного указателя, приведите пример метода, в котором используется данный указатель.

Данные у каждого объекта свои, а функции класса общие для всех объектов,

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

class MyClass{

int a;

public:

void set(int a);

};

void MyClass::set(int a){

this->a=a; //полю класса присваиваются данные, определение кому присваивается.

}

  1. Дайте определения понятиям конструктора и деструктора в контексте языка С++, поясните назначение, запишите синтаксис объявления, приведите пример использования.

Конструктор – это метод класса, выполняющийся автоматически в момент создания объекта. Конструктор предназначен для инициализации объекта.

Особенности:

Имя конструктора совпадает с именем класса

Конструктор не возвращает значение, даже типа void

Конструктор описывается в секции public

Синтаксис имя_класса([параметры]):

список_инициализации {

[операторы;]}

Например:

someClass() : m1(3),m2(7),m3(0){ }

Основные свойства конструкторов:

Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации (при этом используется механизм перегрузки).

Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

Конструкторы не наследуются.

Конструкторы нельзя описывать с модификаторами const, virtual и static.

Конструктор по умолчанию (без параметров)

Конструктор с параметрами

Конструктор копирования

Формат:

имя_класса () : список_инициализации {

[операторы_инициализации;]

}0

имя_класса (список_параметров) : список_инициализации {

[операторы_инициализации;]

}

имя_класса (имя_класса &) : список_инициализации {

[операторы_инициализации;]

}

Деструктор — это специальный метод класса, применяющийся для освобождения памяти, занимаемой объектом.

Особенности деструкторов:

Имя деструктора начинается с тильды (~), непосредственно за которой следует имя класса.

Всегда описывается в секции public

Не имеет ни типа, ни параметров

Деструктор:

не перегружается;

не может быть объявлен как const или static;

не наследуется;

может быть виртуальным.

Worker::~ Worker( )

{delete [ ] post; }

  1. Поясните, что представляет собой конструктор по умолчанию, перегруженный конструктор и конструктор со списком инициализирующих параметров, приведите синтаксис записи каждого из этих конструкторов в контексте языка С++, приведите пример объявления, определения и использования

Конструктор по умолчанию:

- чаще всего инициализирует данные класса нулевыми значениями.

Формат:

имя_класса () : список_инициализации {

[операторы_инициализации;]

}Формат

Пример:

Worker( ):code(0),salary(0),post(″″)

{ fio[0]=′\0′ }

Конструктор с параметрами:

- инициализирует поля класса значениями полученных параметров.

Формат:

имя_класса (список_параметров) : список_инициализации {

[операторы_инициализации;]}

Конструктор копирования

- создает копию объекта в оперативной памяти с помощью другого объекта. Параметром является указатель на объект этого же класса.

Формат:

имя_класса (имя_класса &) : список_инициализации {

[операторы_инициализации;]}

Вызов конструктора:

имя_класса имя_объекта;

имя_класса имя_объекта (список_параметров);

имя_класса имя_объекта (имя_объекта_копирования);

Например:

sameClass obj1, masObj[10]; // вызывается

// конструктор без параметров

sameClass obj2 (23, 45, 1); // вызывается

// конструктор с параметрами

sameClass obj3 (obj2); // вызывается

// конструктор копирования

  1. Назовите операторы, которые можно перегружать в классе, приведите синтаксис записи перегруженного оператора в контексте языка С++, поясните, что представляет собой такое явление, как перегрузка, приведите пример перегрузки операторов.

Использование нескольких функций с одним и тем же именем, но различными типами параметров, называется функций перегрузкой функций

Можно перегружать любые операции, существующие в С++, за исключением:

. ?: :: # sizeof

Синтаксис :

тип operator операция (список_параметров) { тело_функции }

Перегрузка операторов — в программировании — один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются.

Перегрузка операций осуществляется с помощью методов специального вида ( функций-).функций операций

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

Дружественные функции применяются для доступа к скрытым полям класса и представляют собой альтернативу методам.

В виде дружественных функций оформляются действия, не представляющие свойства класса, но концептуально входящего интерфейс и нуждающиеся в доступе

к его скрытым полям.

Правила описания и особенности дружественных функций.

Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. В качестве параметра ей должен передаваться объект или ссылка на объект класса.

Дружественная функция может быть обычной функцией или методом другого ранее определенного класса. На нее не распространяется действие спецификаторов доступа, место размещения ее объявления в классе безразлично.

Одна функция может быть дружественной сразу нескольким классами.

Пример:

class Time {

hour, minute, second;

public:

Time() : hour(0), minute(0),second(0) { }

hour(h), minute(m), second(s) { }

Time (Time &t) : hour(t.hour),

minute(t.minute), second(t.second) { }

friend ostream& operator «

friend istream& operator »( istream& i_str,

Time& t);

};int Time(int h, int m = 0, int s = 0): заменяем функцию show() функцией-операцией: ( ostream& o_str, Time t);

ostream& operator « ( ostream& o_str, Time t){

o_str « t.hour « ':' « t.minute « ':' «

t.second « endl;

return o_str;

} () {

Time t1(12,35,45), t2;

cin » t2;

cout « endl « t1 « t2;

Time t3;;

return 0;}

  1. Запишите синтаксис объявления класса потомка в контексте языка С++, поясните, что представляет собой такое явление, как простое наследование, поясните, как осуществляется управление доступом при наследовании, приведите пример.

Класс является абстрактным типом данных, пользователем, и в и с ними. определяемым пользователем представляет собой модель реального объекта виде данных функций для работы ними полями, а – методами. и класса.функции класса методами Поля методы называются элементами класса Данные класса называются полями

class <имя> {

<элементов> описание скрытых элементов

<элементов> описание доступных элементов [ private:] public: } ;

Простым называется наследование, при котором производный класс имеет одного родителя.

Возможность обращения к элементам этих классов регулируется с помощью ключей доступа private, protected и public.

Синтаксис:

class Manager : public Worker{

char category [20];

public:

void getdata() {

Worker::getdata();

void putdata() const {

Worker::putdata(); };

cout << “Категория: ” ; cin >>category; }cout <<“Категория: ”<<category; }

  1. Поясните, что представляет собой такое явление, как множественное наследование, запишите синтаксис объявления класс-потомка от нескольких предков в контексте языка С++, поясните, чем отличается перегрузка от переопределения методов в классах-потомках, приведите пример множественного наследования.

Множественное наследование означает, что класс имеет несколько базовых классов.

Множественное наследование применяется для того, чтобы обеспечить производный класс свойствами двух или более базовых.

Переопределение метода выполняется только в том случае, если имена и сигнатуры типов двух методов идентичны. В противном случае два метода являются просто перегруженными. Например, рассмотрим измененную версию предыдущего примера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]