Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по Леонову, 5семестр.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
503.3 Кб
Скачать

6. Работа с многофайловыми проектами. Использование включаемых файлов.

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

Работа с многофайловыми проектами(обработка файлов)

  1. выполняется препроцессором

  2. преобразуется компиллятором

  3. выполняется библиотекарем(сборка из нескольких файлов)

  4. с помощью компоновщика собирается исполнительный файл .exe

Использование включаемых файлов:

Если посмотреть начало любого файла, то заметно, что одной из первых в них стоит строка #include “stdafx.h”. Этот включаемый файл служит для подключения к программе необходимых ей библиотечных файлов. Когда пишутся большие приложения (многофайловые проекты), обязательно требуется использование заранее откомпилированных заголовочных файлов, это помогает существенно сократить время компилляции. Перекомпилированные заголовки удобны, если у вас есть несколько заголовков, которые должны быть включены во все или в большинство исходных файлов. Однако, их использование полезно только в том случае, если сами они не меняются между компилляциями.

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

Пример:

F1.cpp

Int I=0;

Void f(int)

{

}

_ _ _ _ _

f2.cpp //внешняя функция

extern int I;

void f(int);

void main()

{

I=2;

F(i);

}

extern – значит, что переменная встретится ещё где-то, кроме f1.cpp, те достаточно в одном файле её(переменную) объявить как extern и далее в других файлах просто использовать(отдельно объявлять не нужно).

если библиотека большая:

f1.h

extern int I;

void f(int); и далее в файле F2.cpp «делаем» #include “f1.h”

_ _ _ _ _ _

f2.cpp

#include “f1.h”

static int I=2; //static – переменная не будет доступна извне.

F1.cpp

Static int I=0;

7. Объекты и классы в С++

Целью введения концепции классов в С++ явл-ся предоставление программисту средств создания новых типов, кот. настолько же удобны в использовании, как и встроенные. Кроме того, производные классы и шаблоны представляют способы организации классов, имеющих между собой нечто общее. Класс – это некоторый абстрактный тип памяти, кот. содержит в себе атрибуты состояния и поведения объектов класса, это определяемый пользователем тип. Атрибуты состояния – екот. Множество идентификаторов абстрактных классов. Атрибуты поведения – различные ф-ии, т.к. класс это тип, то сам по себе он явл. Только хар-кой некот. Абстрактной области памяти. Конструкция class X {…}; наз-ся определением класса или объявлением класса. Управление доступом:

Class Date{

Int d,m,y;

Public:

void init date(int dd, int mm,int yy); // инициализация

void add_year(int n); //прибавить n лет, месяцев, дней.

void add_month(int n);

void add_ day(int n);

};

метка Public (определяет, что перечисленные атрибуты м.б. видны вне объекта класса): разделяет тело класса на две части. Имена в первой могут использоваться только функциями – членами. Вторая открытая часть образует открытый интерфейс объектов класса. Ф-ия, кот. назначена для инициализации, и кот. конструирует значения данного типа наз-ся конструктором. Имя его совпадает с названием класса. Если класс имеет конструктор, все объекты этого класса будут проинициализированы. Если конструктору требуются аргументы, они д. б. предоставлены. Часто удобно иметь несколько способов инициализации объекта класса, этого можно добиться, введя несколько конструкторов. Пока конструкторы значительно различаются типами своих аргументов, компилятор может выбрать нужный в каждом конкретном случае. Объекты – физическая реализация данного абстрактного типа, т.е. объекты класса – это физич. Область памяти, структуры кот. соответствует типу класса. Классы объявляются как обычные типы и имеют ключевое слово class. Класс имеет метки видимости атрибутов: Public, private (определяет закрытые атрибутыт.е. эти атрибуты могут исп-ся только в ф-ях, кот принадлежат самому классу.),protected(исп-ся при организации наследования классов). Объекты: могут создаваться несколькими способами. Некоторые явл-ся локальными переменными, другие – глобальными, третьи – членами классов и т.д. конструкторы инициализируют объект, т.е. создают среду, в кот. работают функции-члены. При этом происходит захват ресурсов (файлов, блокировка, патять), кот. д. б. освобождены после их использования. Для этого есть ф-я, кот. будет гарантированно вызвана при уничтожении объекта. Это деструктор. Определении ф-ии в классе: ф-я, определенная в пределах опрелеления класса, явл-ся встроенной ф-ей-членом. Т. е, определение ф-й-членов в классе предназначено для небольших по размеру и часто используемых ф-й.

8.Конструкторы и деструкторы. Работа со статической, автоматической и динамической памятью. Конструктор – метод, вызываемый при создании объекта данного класса. В классе может быть несколько конструкторов, а может и ни одного. Деструктор – метод, вызывакмый при разрушении объета данного класса. Название конструктора определяется по названию класса. Имя деструктора носит имя класса и начинается с тильды. Работа с автоматической памятью: переменными автоматической памяти наз-ся те, кот. объявлены внутри ф-ции. Время жизни и область видимости – блок, где они описаны. Int f() {Aa;}Статические переменные описываются вне ф-ий, либо в них, но с символом static. Время жизни – вся программа. Конструктор объявлен до главной ф-ии main, а деструктор после неe.

Aa;

Int f() {

Static Aa; }

динамическая память – память выделенная с помощью оператора new:

Aa;

Int f() {

A*a=new A;

Delete a; }