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

Простые типы данных

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

  • int (целый);

  • char (символьный);

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

  • bool (логический);

  • float (вещественный);

  • double (вещественный с двойной точностью).

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

  • short (короткий);

  • long (длинный);

  • signed (со знаком);

  • unsigned (без знака).

Таблица 1.3. Диапазоны значений простых типов данных для IBM PC

Тип

Диапазон значений

Размер (байт)

bool

true и false

1

signed char

–128 .. 127

1

unsigned char

0 .. 255

1

signed short int

–32 768 .. 32 767

2

unsigned short int

0 .. 65 535

2

signed long int

–2 147 483 648 .. 2 147 483 647

4

unsigned long int

0 .. 4 294 967 295

4

float

3.4e–38 .. 3.4e+38

4

double

1.7e–308 .. 1.7e+308

8

long double

3.4e–4932 .. 3.4e+4932

10

40. Что такое this?   Допустим имеется некий метод в неком классе. При вызове этого метода ему передается автоматически неявно заданный аргумент, который представляет собой ссылку на вызывающий объект. Эта ссылка и называется ключевым словом this. В большинстве случаев программисты им не пользуются. Но из this можно иногда извлечь пользу. Например, синтаксис С# допускает, чтобы имя параметра или локальной переменной совпадало с именем переменной экземпляра. В этом случае локальное имя будет скрывать переменную экземпляра. И тогда доступ к скрытой переменной экземпляра можно получить с помощью ссылки this. В этой версии конструктора имена параметров совпадают с именами переменных экземпляра, в результате чего за первыми скрываются вторые, а ключевое слово this как раз и используется для доступа к скрытым переменным экземпляра. 

42.Файловый ввод-вывод с использованием потоков Для осуществления операций с файлами предусмотрено три класса: ifstream, ofstream и fstream. Эти классы являются производными, соответственно, от классов istream, ostream и iostream. Поскольку эти последние классы, в свою очередь, являются производными от класса ios, классы файловых потоков наследуют все функциональные возможности своих родителей (перегруженные операции « и » для встроенных типов, функции и флаги форматирования, манипуляторы и пр.). Для реализации файлового ввода-вывода нужно включить в программу заголовочный файл fstream.h. Существует небольшое отличие между использованием предопределенных и файловых потоков. Файловый поток должен быть связан с файлом прежде, чем его можно будет использовать. С другой стороны, предопределенные потоки могут использоваться сразу после запуска программы, даже в конструкторах статических классов, которые выполняются даже раньше вызова функции main(). Можно позиционировать файловый поток в произвольную позицию в файле, в то время как для предопределенных потоков это обычно не имеет смысла. Для создания файлового потока эти классы предусматривают следующие формы конструктора: создать поток, не связывая его с файлом: ifstream();  ofstream();  fstream(); создать поток, открыть файл и связать поток с файлом: ifstream(const char *name, ios::openmode mode = ios::in) ;  ofstream(const char* name, ios::openmode mode=ios::out | ios::trunc); fstream(const char * name, ios::openmode mode = ios::in | ios::out); Чтобы открыть файл для ввода или вывода, можно использовать вторую форму нужного конструктора fstream fs("FileName.dat"); или вначале создать поток с помощью первой формы конструктора, а затем открыть файл и связать поток с открытым файлом, вызвав функцию-член open(). Эта функция определена в каждом из классов потокового ввода-вывода и имеет следующие прототипы: void ifstream::open(const char *name, ios::openmode mode = ios::in);  void ofstream::open  (const char * name, ios::openmode mode = ios::out | ios::trunc);  void fstream::open  (const char * name, ios::openmode mode = ios::in | ios::out); Здесь name - имя файла, mode - режим открытия файла. Параметр mode является перечислением и может принимать значения, указанные в табл. 8. Таблица 8 Режимы открытия и их назначение Режим открытияНазначениеios::inОткрыть файл для чтенияios::outОткрыть файл для записиios::ateНачало вывода устанавливается в конец файлаios::appОткрыть файл для добавления в конецios::truncУсечь файл, то есть удалить его содержимоеios::binaryДвоичный режим операций

43. Функции-друзья Если программа использует друзей для доступа к частным данным класса, вы можете ограничить количество функций-элементов класса-друга, который может обращаться к частным данным, используя дружественные функции. Для объявления функции-друга укажите ключевое слово friend, за которым следует полный прототип, как показано ниже: public: friend class_name::function_name(parameter types); Только функции-элементы, указанные как друзья, могут напрямую обращаться к частным элементам класса, используя оператор точку.

44.Явное и неявное преобразование типов.

В C++ различают явное и неявное преобразование типов данных. Неявное преобразование типов данных выполняет компилятор С++, ну а явное преобразование данных выполняет сам программист. О преобразовании типов данных скажу следующее: «Результат любого вычисления будет преобразовываться к наиболее точному типу данных, из тех типов данных, которые участвуют в вычислении». Для наглядного примера представлю таблицу с преобразованиями типов данных. В таблице рассмотрим операцию деления. В качестве целочисленного типа данных возьмем int, ну и вещественный тип данных у нас будет float.

x

y

Результат деления

Пример

делимое

делитель

частное

x = 15 y = 2

int

int

int

15/2=7

int

float

float

15/2=7.5

float

int

float

15/2=7.5

Из таблицы видно, что меняя переменные различных типов данных местами, результат остается тот же (в нашем случае это делимое и делитель). О неявном преобразовании типов данных все, что же касается явного преобразования, то оно необходимо для того чтобы выполнять некоторые манипуляции, тем самым меняя результата вычисления. Самый простой способ явного преобразования типов данных, пример: допустим нам необходимо разделить такие числа 15 и 2, делим! 15/2=7. Результат тот же, что и в таблице. Но если сделать незначительные преобразования, например: 15.0/2=7.5 при таком делении число 15 является вещественным, значит и результат будет вещественный. Само число 15 с точки зрения математики не изменилось, ведь 15=15.0. Этот же прием можно было применить к двойке, результат был бы тем же, а можно было сразу к двум числам, но зачем ,если хватает одного из двух.

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