русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Параметризованные конструкторы


Дата добавления: 2013-12-23; просмотров: 1782; Нарушение авторских прав


Глава 3. Классы и объекты

Два новых типа данных

Просматривая список ключевых слов таблицы 2.1, можно заметить добавление двух новых встро­енных типов: boolи wchar_t.Тип данных boolпредназначен для логических величин. Они могут принимать только два значения - trueи false.Значения trueи falseтакже являются ключевыми словами и служат частью языка C++. При употреблении логических типов в нелогических выражениях они автоматически преобразуются к типу целых чисел. Хотя C++ определяет тип данных bool,он продолжает полностью поддерживать фундаментальную концепцию о том, что ненулевые целые числа соответствуют значению истина, а нулевое значение соответствует значению ложь.

Тип wchar_tподдерживает широкие символы, обычно являющиеся 16-битовыми значениями. Они обычно используются для представления набора букв в языках, для которых недостаточно 255 символов. Тип wchar_tподдерживается в С путем определения типа с использованием typdef.ВC++ этот тип стал ключевым словом.

asm inline template
bool mutable this
catch namespace throw
class new true
const_cast operator try
delete private typeid
dynamic_cast protected typename
explicit public using
false reinterpret_cast virtual
friend static_cast wchar_t

Таблица 2.1. Ключевые слова C++

 

Конструкторам можно передавать аргументы. Обычно эти аргументы используются для того, чтобы помочь инициализировать создаваемый объект. Для того чтобы создать параметризированный конструктор, достаточно попросту добавить параметры, как это делается для любой другой фун­кции. При определении тела конструктора, т.е. кода, который реализует конструктор, эти пара­метры используются для инициализации объекта. Например, можно усовершенствовать класс queue, рассмотренный в конце предыдущей главы, путем передачи ему в качестве аргумента числа, слу­жащего идентификатором объекта. Объявление класса queue будет иметь следующий вид:



class queue

{

int q[100];

int s, r;

int who; // содержит идентификатор очереди

public:

queue(int id); // параметризированный конструктор

~queue(); // деструктор

void put(int i);

int get();

}

Переменная who используется для хранения значения идентификатора, служащего для иденти­фикации объекта типа queue. Его значение определяется аргументом id при создании объекта. Конструктор queue() будет выглядеть следующим образом:

queue::gueue(int id)

{

s = r = 0;

who = id;

cout << "Queue " << who << " initialized.\n";

}

Для передачи аргумента конструктору необходимо задать его значение при объявлении объек­та. C++ поддерживает два способа решения этой задачи. Первый из них выглядит следующим образом:

queue a = queue(101);

Здесь конструктор класса queue вызывается непосредственно с передачей ему значения 101. Значе­нием переменной а служит сам созданный объект.

Второй способ короче и более непосредственно ведет к цели. В этом методе аргумент или аргу­менты следуют за именем объекта в скобках. Следующая строка кода служит той же самой цели, что и предыдущее объявление объекта:

queue a(101);

Общая форма для передачи аргументов конструктору имеет следующий вид:

тип_класса объект(список_аргументов);

Здесь список_аргументов представляет собой список аргументов, разделенных запятыми. Эти аргументы и передаются конструктору.

Следующая программа демонстрирует передачу аргументов конструктору:

int main()

{

queue a(1), b(2); // создание двух объектов типа queue

a.put(10); a.put(20);

b.put(19); b.put(1);

cout << a.get() << " ";

cout << a.get() << " ";

cout << b.get() << " ";

cout << b.get() << "\n";

return 0;

}

Эта программа выводит следующий текст:

Queue 1 initialized.

Queue 2 initialized.

10 20 19 1

Queue 2 destroyed.

Queue 1 destroyed.

Посмотрев на функцию main(), мы увидим, что объект а имеет в качестве идентификатора 1, а объект b - 2.

Хотя в данном примере при создании объекта ему передается только один аргумент, можно передавать также и несколько аргументов. Например, в следующей программе объектам типа pair передаются два значения:

#include <iostream.h>

class pair

{

int i;

int j;

public:

pair(int a, int b);

void put();

}

pair:: pair(int a, int b)

{

i = a;

j = b;

}

void pair::put()

{

cout << i << " " << j << "\n";

}

int main()

{

pair x(10, 20), y(0, 0);

x.put();

у.put();

return 0;

}

Эта программа выведет на экран значения

10 20

0 0



<== предыдущая лекция | следующая лекция ==>
Конструкторы и деструкторы | Дружественные функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.