С++ для начинающих
508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.

Конструктор производного класса


В классе 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 )

508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.

   // 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 мы построим объекты каждого из производных классов для представления различных запросов пользователя.)



Содержание раздела

508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.