17.4.2. Конструктор производного класса
17.4.2. Конструктор производного класса
В классе NameQuery также определены два конструктора. Они объявлены открытыми, поскольку ожидается, что в приложении будут создаваться объекты этого класса:
class NameQuery : public Query {
public:
explicit NameQuery( const string& );
NameQuery( const string&, const vector* );
// ...
protected:
// ...
};
Конструктор с одним параметром принимает в качестве аргумента строку. Она передается конструктору объекта типа string, который вызывается для инициализации члена _name. Конструктор по умолчанию базового класса Query вызывается неявно:
inline
NameQuery::
NameQuery( const string &name )
// Query::Query() вызывается неявно
: _name( name )
{}
Конструктор с двумя параметрами также принимает строку в качестве одного из них. Второй его параметр - это указатель на вектор позиций. Он передается закрытому конструктору базового класса Query. (Обратите внимание, что _present нам больше не нужен, и мы исключили его из числа членов NameQuery.)
inline
NameQuery::
NameQuery( const string &name, vector& location& *ploc )
: _name( name ), Query( *ploc )
{}
Конструкторы можно использовать так:
string title( "Alice " );
NameQuery *pname;
// проверим, встречается ли "Alice " в отображении слов
// если да, получить ассоциированный с ним вектор позиций
if ( vector location *ploc = retrieve_location( title ))
pname = new NameQuery( title, ploc );
else pname = new NameQuery( title );
В каждом из классов NotQuery, OrQuery и AndQuery определено по одному конструктору, каждый из которых вызывает конструктор базового класса неявно:
inline NotQuery::
NotQuery( Query *op = 0 ) : _op( op ) {}
inline OrQuery::
OrQuery( Query *lop = 0, Query *rop = 0 )
: _lop( lop ), _rop( rop )
{}
inline AndQuery::
AndQuery( Query *lop = 0, Query *rop = 0 )
: _lop( lop ), _rop( rop )
{}
(В разделе 17.7 мы построим объекты каждого из производных классов для представления различных запросов пользователя.)
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Конструктор узоров
Конструктор узоров Фильтр Конструктор узоров позволяет создать узор из любого фрагмента изображения. При выборе команды меню Фильтр ? Конструктор узоров появляется окно фильтра (рис. 11.51). Рис. 11.51. Окно фильтра Конструктор узоровФильтр содержит множество настроек, с
Конструктор, заданный по умолчанию
Конструктор, заданный по умолчанию Заданный по умолчанию конструктор агента "жестко" определяет значение URL удаленного Web-сервиса и запоминает это значение в наследуемом свойстве Url.public CalculatorWebService() { this.Url = "http://localhost/CalcServicе/Service.asmx";}Очевидным недостатком такого подхода
Работа с диаграммами на вкладках Конструктор и Макет
Работа с диаграммами на вкладках Конструктор и Макет Несколько изменим вид круговой диаграммы.• Выделите диаграмму и перейдите на вкладку Конструктор.• Раскройте галерею Макеты диаграмм и выберите Макет 1.Обратите внимание, что легенда справа от диаграммы исчезла. В
14.2. Конструктор класса
14.2. Конструктор класса Среди других функций-членов конструктор выделяется тем, что его имя совпадает с именем класса. Для объявления конструктора по умолчанию мы пишем2:class Account {public:// конструктор по умолчанию ...Account();// ...private:char *_name;unsigned int _acct_nmbr;double _balance;};Единственное
14.2.1. Конструктор по умолчанию
14.2.1. Конструктор по умолчанию Конструктором по умолчанию называется конструктор, который можно вызывать, не задавая аргументов. Это не значит, что такой конструктор не может принимать аргументов; просто с каждым его формальным параметром ассоциировано значение по
14.2.3. Копирующий конструктор
14.2.3. Копирующий конструктор Инициализация объекта другим объектом того же класса называется почленной инициализацией по умолчанию. Копирование одного объекта в другой выполняется путем последовательного копирования каждого нестатического члена. Проектировщик
15.9.2. Конструктор как конвертер
15.9.2. Конструктор как конвертер Набор конструкторов класса, принимающих единственный параметр, например, SmallInt(int) класса SmallInt, определяет множество неявных преобразований в значения типа SmallInt. Так, конструктор SmallInt(int) преобразует значения типа int в значения типа SmallInt.extern
17.4. Конструирование базового и производного классов
17.4. Конструирование базового и производного классов Напомним, что объект производного класса состоит из одного или более подобъектов, соответствующих базовым классам, и части, относящейся к самому производному. Например, NameQuery состоит из подобъекта Query и объекта-члена
17.4.1. Конструктор базового класса
17.4.1. Конструктор базового класса В нашем базовом классе объявлено два нестатических члена: _solution и _loc:class Query {public:// ...protected:setshort *_solution;vectorlocation _loc;// ...};Конструктор Query по умолчанию должен явно инициализировать только член _solution. Для инициализации _loc автоматически вызывается
Конструктор класса
Конструктор класса Класс CString имеет несколько различных конструкторов, позволяющих создавать строки на основе различных данных.Конструктор класса CString, используемый по умолчанию, не имеет параметров. Он создает пустую строку. В последствии вы можете записать в нее любой
7.2.1 Построение Производного Класса
7.2.1 Построение Производного Класса Рассмотрим построение программы, которая имеет дело с людьми, служащими в некоторой фирме. Структура данных в этой программе может быть например такой:struct employee (* // служащий char* name; // имя short age; // возраст short department; // подразделение int salary; //
Софтерра: Вычислительный конструктор
Софтерра: Вычислительный конструктор Автор: Сергей Гладких sergeyxtr@gmail.comЧеловечество штурмует (или точнее будет сказать — осаждает?) неприступную крепость математики вот уже несколько тысячелетий. Раньше в этом бою мы могли полагаться только на свои собственные силы, на
Главный конструктор «Уралов»
Главный конструктор «Уралов» После завершения работ по «Стреле» он с удвоенной энергией берется за создание машины «Урал-1» (той самой, что на много лет стала потом «рабочей лошадкой» во многих ВЦ страны) с дальним прицелом создать семейство машин, начиная от ЭВМ малой
Конструктор ЭВМ
Конструктор ЭВМ Будучи руководителем Вычислительного центра АН УССР, а затем директором Института кибернетики, костяком которых стал коллектив, работавший над первыми отечественными ЭВМ, В. М. Глушков просто не мог не втянуться в область создания средств вычислительной