Конструктор производного класса
В классе NameQuery
также определены два конструктора. Они объявлены открытыми, поскольку ожидается, что в приложении будут создаваться объекты этого класса:
class NameQuery : public Query { public: explicit NameQuery( const string& ); NameQuery( const string&, const vector<location>* ); // ... 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 мы построим объекты каждого из производных классов для представления различных запросов пользователя.)
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий