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

Наследуются ли конструкторы и деструкторы? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсылка межпроцессовых сообщений http://www.cyberforum.ru/cpp-beginners/thread37857.html
Есть два процесса основной и дочерний, как дочернему отправить сообщение, точнее даже вопрос не как отправить, а как получить, вот отправлять пытаюсь так STARTUPINFO sic; ZeroMemory...
C++ Класс TPlane, описывающий плоскость в пространстве Собственно само задание: переписать программу, используя новые знания о классах и перезагрузке операций. Использовать динамическое выделение памяти под создаваемый объект. Класс TPlane,... http://www.cyberforum.ru/cpp-beginners/thread37856.html
Полиморфизм своими словами C++
Дайте определения полиморфизма своими слова. А так же примерчик, который ярко выражает полиморфизм. Спасибо.
c++ C++
Что значит строки v_arr(arr, N); w_arr(arr, N);
C++ Вывести на экран "уникальные" элементы массива http://www.cyberforum.ru/cpp-beginners/thread37848.html
1 Есть массив, вывести на экран все элементы, которые встречаются хотя-бы дважды 2 Вывести на экран "уникальные" элементы. ЗЫ использовать только <iostream>
C++ Проблемы с sort() В #include "stdafx.h" #include <iostream> #include <ctime> #include <algorithm> using namespace std; void out(int *a,int n,int k); void vin(int *a,int n); void copt(int *a,int n,int k);... подробнее

Показать сообщение отдельно
kzru_hunter
1098 / 767 / 58
Регистрация: 01.02.2011
Сообщений: 1,779
Записей в блоге: 1
07.02.2016, 09:54
Вообщем, mporro правильно писал про наследование.
Объект производного класса, унаследованного от одного какого-нибудь базового класса, содержит неименованный подобъект базового класса.
Объект производного класса, унаследованного от двух базовых классов (множественное наследование), содержит два неименованных подобъекта, относящихся к этим базовым классам.
Получается, такое отношение называется has a (содержит), а не is a (является). Т.е объект производного класса содержит реализацию базового класса при простом наследовании или нескольких базовых классов при множественном наследовании.
Чтобы объект смог достучаться до своих неименованных подобъектов, он должен использовать оператор расширения видимости, например так: объект->Base::f()
Помимо реализации производному классу ещё достаётся и интерфейс базового класса, т.е. интерфейс базового класса переходит в интерфейс САМОГО производного класса (не путать с интерфейсом при обращении к подобъектам). Т.е. если в базовом классе есть метод Base->f(), то в производный класс он перейдёт как Derived->f(). По сути, объект этого производного класса при обращении к f() будет вызывать функцию f() своего подобъекта. Если бы интерфейс функции f() базового класса не унаследовался бы в производный класс, то у нас не было бы возможности вызвать эту функцию через сам объект производного класса derivedObj->f(), но была бы возможность её вызвать через интерфейс его подбъекта derivedObj->подобъект->f(), т.е на C++ было выглядело так: derivedObj->Base::f()
Как раз интерфейс конструктора, деструктора и оператора присваивания не наследуется. А всё из-за того, что компилятор всегда генерирует для производного класса свои версии конструктора, деструктора и копирующего оператора присваивания, даже если они не были определены явно в классе. Т.е. в производном класса всегда имеется интерфейс к своим конструктору, деструктору, копирующему оператору присваивания, из-за чего интерфейс с версиями конструкторов, деструктора и операторов присваивания базового класса не может быть унаследован, т.к. если в производном классе есть функция с тем же именем, что и в базовом, то она перекрывает все функции базового класса с тем же именем в независимости от сигнатуры.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru