и производных классов для той
Упражнение 17.7
Идентифицируйте конструкторы и деструкторы базового и производных классов для той иерархии, которую вы выбрали в упражнении 17.2 (раздел 17.1).
Упражнение 17.8
Измените реализацию класса OrQuery так, чтобы он был производным от BinaryQuery.
Упражнение 17.9
Найдите ошибку в следующем определении класса:
class Object {
public:
virtual ~Object();
virtual string isA();
protected:
string _isA;
private:
Object( string s ) : _isA( s ) {}
};
Упражнение 17.10
Дано определение базового класса:
class ConcreteBase {
public:
explicit ConcreteBase( int );
virtual ostream& print( ostream& );
virtual ~Base();
static int object_count();
protected:
int _id;
static int _object_count;
};
Что неправильно в следующих фрагментах:
(a) class C1 : public ConcreteBase {
public:
C1( int val )
: _id( _object_count++ ) {}
// ...
};
(b) class C2 : public C1 {
public:
C2( int val )
: ConcreteBase( val ), C1( val ) {}
// ...
};
(c) class C3 : public C2 {
public:
C3( int val )
: C2( val ), _object_count( val ) {}
// ...
};
(d) class C4 : public ConcreteBase {
public:
C4( int val )
: ConcreteBase ( _id+val ){}
// ...
};
Упражнение 17.11
В первоначальном определении языка C++ порядок следования инициализаторов в списке инициализации членов определял порядок вызова конструкторов. Принцип, который действует сейчас, был принят в 1986 году. Как вы думаете, почему была изменена исходная спецификация?
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий