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

3.Сценарии создания объектов: с инициализацией по умолчанию, со специальной инициализацией, путем копирования других объектов

Элементы-данные класса обычно инициализируются в теле конструктора. Однако, определение конструктора может содержать список инициализации элементов-данных класса. Этот список отделяется двоеточием от заголовка определения конструктора и содержит перечисление через запятую элементов данных с указанием в скобках устанавливаемых значений:

class Point

{

int x, y;

int color;

public :

Point(int cx,int cy) : x(cx), y(cy), color(0) {}

};

Тот же результат мог быть достигнут и за счет определения конструктора в виде:Point(int cx,int cy) { x = cx; y = cy; color = 0; }

Но в некоторых случаях инициализация переменных может быть выполнена только через список инициализации:

1) для инициализации элементов-данных, являющихся константами

(const int color);

2) если элемент класса сам является классом, имеющим конструктор с параметрами:

class Circle

{

Point center;

int radius;

public :

Circle(int cx,int cy,int r) : Point(cx,cy), radius(r) {}

};

К специальным видам конструкторов относятся конструктор копирования и конструктор преобразования. Эти конструкторы выделяются по строго определенному составу параметров. Они могут использоваться и как обычные конструкторы, но кроме этого компилятор генерирует обращение к ним при использовании некоторых специфических форм создания объектов класса.

Конструктор копирования должен иметь единственный параметр - ссылку на объект того же класса (имя_класса&) или (const имя_класса&). Этот конструктор вызывается, если при создании объекта выполняется его инициализация значениями другого объекта. Например:

class Point

{

int x, y;

int color;

public :

Point(int cx,int cy) : x(cx), y(cy), color(0) {}

Point(Point &p) { x = p.x; y = p.y; color = p.color;}

};

Point p2 = p1; // вызывается конструктор копирования

Если конструктор копирования не определен, то выполняется побайтное копирование из инициализирующего объекта.

билет № 3

1. Структура программы на Си, трансляция и создание загрузочного модуля.

В языке Си любая программа состоит из одной или более функций. Различ. Ф-циям можно давать люб. имена. Есть ф-ция main; выполн. любой проги начин. с неё.

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

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

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

#include <stdio.h>

main()

{

int a;

char b;

scanf("%d %c",&a,&b);

printf("%d %c",a,b);

}