Просматривая список ключевых слов таблицы 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 передаются два значения: