Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
1) Конструкторы базовых классов, если класс для создаваемого объекта является наследником других классов в порядке их появления в описании класса. Если в списке инициализации описываемого класса присутствует вызов конструктора преобразования (или конструктора с двумя и более параметрами) базового класса, то вызывается конструктор преобразования (или конструктор с двумя и более параметрами), иначе вызывается конструктор умолчания базового класса.
2) Конструкторы умолчания всех вложенных информационных членов, которые не перечислены в списке инициализации, и конструкторы преобразования, копирования и конструкторы с двумя и более параметрами всех вложенных информационных членов, которые перечислены в списке инициализации. Все перечисленные в данном пункте конструкторы (умолчания, преобразования, копирования, с двумя и более параметрами) вызываются в порядке описания соответствующих информационных членов в классе.
3) Собственный конструктор. Такая последовательность вызова конструкторов логически обосновывается тем, что в момент выполнения собственного конструктора все информационные поля должны быть уже проинициализированы.
Деструкторы вызываются в обратном порядке:
1) Собственный деструктор. В момент начала его работы поля класса еще не очищены, и их значения могут быть использованы в теле деструктора.
2) Деструкторы вложенных объектов в порядке, обратном порядку их описания.
3) Деструкторы базовых классов в обратном порядке их задания.
Перегрузка функций
Имеется возможность описывать разные алгоритмы для одного и того же идентификатора функции при разных количествах и наборах типов входных параметров. Такое описание разных алгоритмов в одной зоне описания (класс, пространство имен) называется перегрузкой функций (если описание разных алгоритмов для одного и того же имени осуществляется в разных зонах, то говорят о перекрытии).
При вызове функции для выбора подходящей перегруженной функции выполняется следующий алгоритм:
Алгоритм поиска оптимально отождествляемой функции
1) Отбираются функции с необходимым количеством формальных параметров.
Описания, содержащиеся в библиотечном файле <cstdarg>, становятся доступными после его подключения директивой препроцессора #include <cstdarg>.
Такой метод используется при передаче списка строковых параметров из командной строки вызова программы на исполнение:
int main(int argc, char * argv[])
Здесь args – количество строковых параметров в командной строке вызова программы на исполнение, включая идентификатор программы.
2) Для каждого фактического параметра вызова функции строится множество функций, оптимально отождествляемых по этому параметру (best matching)
3) Находится пересечение этих множеств
4) Если полученное множество состоит из одной функции, то вызов разрешим. Если множество пусто или содержит более одной функции, то генерируется сообщение об ошибке.
Пример:
class x{
...
public:
x(int i1){... }
...
};
class y{...};
void f(x x1, int i1){...}
void f(x x1, double d1){...}
void f(y y1, double d1){...}
void g(){... f(1,1)...} // вызов первой реализации
f(x, int)
Пример:
class x{
...
public:
x(int i1){... }
...
};
void f(x x1, int i1){...}
void f(int i1, x x1){...}
void g(){... f(1,1)...} // ошибка: пересечение // множеств – пусто.
Закрытое (private) наследование
Закрытые члены базового класса недоступны напрямую с использованием дополнительных методов класса-наследника (при любом способе наследования). Работа внутри класса-наследника с такими получаемыми закрытыми членами базового класса возможна только с использованием открытых и защищенных методов базового класса.
Закрытые и защищенные получаемые методы недоступны для манипулирования с объектом вне класса. Они могут использоваться как подпрограммы другими методами класса.
При закрытом наследовании открытые и защищенные члены базового класса (любые) доступны только внутри производного класса и недоступны извне (через объекты производного класса), как и его собственные закрытые члены.
Пример:
class X1{
int ix1;
public:
int f1(){... }
... };
class Y1: protected X1 {
... };
class Z1: public Y1 {
... };
class X2{
protected:
int ix2;
public:
int f2(){... }
... };
class Y2: X2 {...};
class Z2: public Y2 {...};
Пример: Базовый класс описывает фигуры на плоскости и имеет методы вычисления площади фигур, а класс-наследник описывает объемные тела, например, призмы с основанием – плоской фигурой, описываемой базовым классом. Поэтому в данном случае не имеет смысла наследование методов базового класса для работы с объектами, описываемыми классом-наследником:
#include <iostream>
using namespace std;
class twom {
double x,y;
public:
twom(double x1=1, double y1=1): x(x1), y(y1) {}
double sq(){
return x*y; } };
class thm: private twom {
double z;
public:
thm(double x1 = 1, double y1 = 1,
double z1 = 1):twom(x1,y1), z(z1){}
double vol(){return sq()*z;} };
int main(){
thm t1(1,2,3);
double d1;
d1 = t1.vol();
cout << "vol= " << d1 << '\n';
return 0; }
|
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!