"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автораЗапись : (hb-lb+1) используется для определения списка параметров конструктора базового класса vector::vector(). Этот конструктор вызывается перед телом vec::vec(). Вот небольшой пример, который можно запустить, если скомпилировать его вместе с остальными описаниями vector: - стр 40 - #include void error(char* p) { cerr << p << "n\"; // cerr - выходной поток сообщений об ошибках exit(1); } void vector::set_size(int) { /* пустышка */ } int& vec::operator[](int i) { if (i 1.14 Еще об операциях - стр 41 - class Vec : public vector { public: Vec(int s) : (s) {} Vec(Vec&); ~Vec() {} void operator=(Vec&); void operator*=(Vec&); void operator*=(int); //... }; Обратите внимание на способ определения конструктора производного класса, Vec::Vec(), когда он передает свой параметр конструктору базового класса vector::vector() и больше не делает ничего. Это полезная парадигма. Операция присваивания перегружена, ее можно определить так: void Vec::operator=(Vec& a) { int s = size(); if (s!=a.size()) error("плохой размер вектора для ="); |
|
|