игра брюс 2048
Главная / Программирование / Программирование на языке C++ / Тест 6

Программирование на языке C++ - тест 6

Упражнение 1:
Номер 1
Выберите правильные утверждения.

Ответ:

 (1) объект в C++ может иметь сколько угодно предков  

 (2) объект в C++ может иметь сколько угодно потомков  

 (3) объект в C++ может иметь только одного предка  

 (4) объект в C++ может иметь только одного потомка  


Номер 2
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ только объекты самого класса?

Ответ:

 (1) protected  

 (2) public  

 (3) virtual protected  

 (4) private  

 (5) virtual  


Номер 3
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ только объекты самого класса
и объекты класса потомка?

Ответ:

 (1) protected  

 (2) public  

 (3) virtual protected  

 (4) private  

 (5) virtual  


Номер 4
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ любые объекты?

Ответ:

 (1) protected  

 (2) public  

 (3) virtual protected  

 (4) private  

 (5) virtual  


Номер 5
Когда происходит динамическое связывание?  

Ответ:

 (1) на этапе компиляции программы. 

 (2) на этапе компоновки программы. 

 (3) на этапе выполнения программы. 

 (4) при создании объектов. 


Номер 6
Какое из следующих утверждений является примером полиморфизма?  

Ответ:

 (1) класс включает данные с одинаковыми именами, но разными типами.  

 (2) выражение, в котором указатель на класс-потомок используется для вызова функции, определенной в базовом классе.  

 (3) функция-член одного класса вызывает функцию-член другого класса.  

 (4) указатель на базовый класс используется для доступа к закрытым членам класса.  

 (5) выражение, в котором вызывается виртуальная функция.  


Номер 7
Какое из следующих утверждений истинно?  

Ответ:

 (1) виртуальные функции должны отличаться числом параметров. 

 (2) виртуальные функции должны отличаться типом параметров. 

 (3) виртуальные функции должны полностью совпадать по типу и числу параметров. 

 (4) виртуальные функции должны отличаться типом возвращаемого значения. 


Номер 8
Если доступ к элементу в базовом классе public, а спецификатор доступа в наследуемом классе - private, какое из приведенных ниже высказываний ИСТИННО?  

Ответ:

 (1) обращение к элементам базового класса невозможно.  

 (2) к элементам базового класса могут обращаться потомки объектов производных классов.  

 (3) производный класс может обращаться к элементам базового класса.  

 (4) производный класс НЕ может обращаться к элементам базового класса.  

 (5) производный класс НЕ может обращаться к элементам производного класса.  


Номер 9
Какое из приведенных ниже высказываний о наследовании истинно?  

Ответ:

 (1) объект производного класса - это также и объект родительского класса.  

 (2) производный класс - это копия родительского класса и находится на два уровня ниже от своего родительского класса в иерархии классов.  

 (3) производный класс будет переопределен своим родительским классом всякий раз, когда встретится общая для них функция.  

 (4) порожденный класс определяет изменения только в своем непосредственном классе-предке.  

 (5) порожденный класс является копией родительского класса и представляет собой последний уровень в иерархии классов.  


Упражнение 2:
Номер 1
Какое из следующих утверждений является НЕПРАВИЛЬНЫМ? 

class Base{};
class Derived: public Base{};

Ответ:

 (1) Base является суперклассом для Derived.  

 (2) Derived является потомком Base.  

 (3) Derived является дочерним классом Base.  

 (4) Base является потомком Derived.  


Номер 2
Какие из следующих утверждений являются НЕПРАВИЛЬНЫМИ? 

class Base{};
class Derived: private Base{};

Ответ:

 (1) Base является суперклассом для Derived.  

 (2) Derived является открытым потомком Base.  

 (3) Derived является дочерним классом Base.  

 (4) Base является потомком Derived.  


Номер 3
Какие из следующих утверждений являются НЕПРАВИЛЬНЫМИ?

class Base{};
class Derived: protected Base{};

Ответ:

 (1) Base является закрытым потомком Derived.  

 (2) Base является суперклассом для Derived

 (3) Derived является дочерним классом Base.  

 (4) Derived является закрытым потомком Base.  


Номер 4
Что необходимо поставить на место "???" в приведенном примере так, чтобы класс C не имел доступа к неоткрытым (non-public) членам класса A?  

class A 
{
// ... 
}; 
class B : ??? A 
{}; 
class C : public B 
{}; 

Ответ:

 (1) protected  

 (2) public  

 (3) virtual protected  

 (4) private  

 (5) virtual  


Номер 5
Выберите правильное утверждение.  

class A {}; 
class B :  public А 
{}; 

Ответ:

 (1) класс В является закрытым потомком класса А.  

 (2) класс В является защищенным потомком класса А.  

 (3) класс В является открытым потомком класса А.  

 (4) класс В не является потомком класса А.  


Номер 6
Выберите правильное утверждение.  

class A {}; 
class B :  protected А 
{}; 

Ответ:

 (1) класс В является закрытым потомком класса А.  

 (2) класс В является защищенным потомком класса А.  

 (3) класс В является открытым потомком класса А.  

 (4) класс В не является потомком класса А


Номер 7
Выберите правильное утверждение.  

class A {}; 
class B :  private А 
{}; 

Ответ:

 (1) класс В является закрытым потомком класса А.  

 (2) класс В является защищенным потомком класса А.  

 (3) класс В является открытым потомком класса А.  

 (4) класс В не является потомком класса А.  


Номер 8
Руководствуясь приведенным кодом, определите, к каким переменным можно обращаться из класса Friend:

class Base
{
	public: int a;
	protected: int b;
	private: int c;
};
class Derived: Base
{
	friend class Friend;
	int d;
};
class Friend
{
	Derived derived;
};

Ответ:

 (1) ни к одной  

 (2) только к 'a' и 'd'  

 (3) только к 'b' и 'a'  

 (4) только к 'a', 'b', и 'c'  

 (5) только к 'a', 'b', и 'd'  


Номер 9
Руководствуясь приведенным кодом, определите, к каким переменным можно обращаться из класса Friend:

class Base
{
	int a;
	public: int b;
	protected: int c;
};
class Derived: Base
{
	friend class Friend;
	int d;
};
class Friend
{
	Derived derived;
};

Ответ:

 (1) ни к одной  

 (2) только к 'b' и 'd'  

 (3) только к 'b' и 'a'  

 (4) только к 'b', 'd' и 'c'  

 (5) только к 'a', 'b' и 'd'  


Номер 10
Руководствуясь приведенным кодом, определите, к каким переменным можно обращаться из класса Friend:

class Base
{
	int b;
	protected: int c;
	public: int d;
};
class Derived: Base
{
	friend class Friend;
	int e;
};
class Friend
{
	Derived derived;
};

Ответ:

 (1) ни к одной  

 (2) только к 'b' и 'e' 

 (3) только к 'e', 'd', и 'c'  

 (4) только к 'd' и 'e'  

 (5) только к 'c' и 'd'  


Упражнение 3:
Номер 1
Какой уровень доступа к функции "setx" в классе "derived" в приведенном примере?

class basex 
{ 
  int x; 
public: 
  void setx(int y) {x = y;} 
}; 
class derived : basex {};  

Ответ:

 (1) protected  

 (2) global  

 (3) public  

 (4) local  

 (5) private 


Номер 2
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  int x; 
public: 
  void setx(int y) {x = y;} 
}; 
class derived : public basex {};  

Ответ:

 (1) protected  

 (2) private  

 (3) global  

 (4) public  

 (5) local  


Номер 3
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  public:
  int x; 
}; 
class derived : basex {};  

Ответ:

 (1) protected  

 (2) private  

 (3) global  

 (4) public  

 (5) local  


Номер 4
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  protected:
  int x; 
}; 
class derived : public basex {};  

Ответ:

 (1) protected  

 (2) private  

 (3) global  

 (4) public  

 (5) local  


Номер 5
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  protected:
  int x; 
}; 
class derived : private basex {};  

Ответ:

 (1) protected  

 (2) global 

 (3) private  

 (4) public  

 (5) local  


Номер 6
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  public:
  int x; 
}; 
class derived : protected basex {};  

Ответ:

 (1) global 

 (2) protected 

 (3) private  

 (4) public  

 (5) local  


Номер 7
Какой уровень доступа имеет переменная "x" из класса "derived" в приведенном примере?

class basex 
{ 
  protected:
  int x; 
}; 
class derived : protected basex {};  

Ответ:

 (1) protected  

 (2) global 

 (3) private  

 (4) public  

 (5) local  


Номер 8
Что выведется на экран в результате работы следующего кода?

class Base
{
 public: 
 void f() {cout<<"111"<<endl;}
};
class Derived: public  Base
{
 public: 
 void f() {cout<<"222"<<endl;}
};
int main()
{
 Base* ptr= new Derived;
 ptr->f();
 return 0;
}

Ответ:

 (1) 111 

 (2) 222 

 (3) 333 


Номер 9
Что выведется на экран в результате работы следующего кода?

class Base
{
 public: 
 virtual void f() {cout<<"111"<<endl;}
};
class Derived: public  Base
{
 public: 
 void f() {cout<<"222"<<endl;}
};
int main()
{
 Base* ptr= new Derived;
 ptr->f();
 return 0;
}

Ответ:

 (1) 111 

 (2) 222 

 (3) 333 


Номер 10
Что выведется на экран в результате работы следующего кода?

class Base
{
 public: 
 Base(int _x = 10){x = _x;}
 void f() {cout<<x*2<<endl;}
 protected:
 int x;
};
class Derived: public  Base
{
 public: 
 void f() {cout<<x/2<<endl;}	
};
int main()
{
 Derived d;
 Base* pB= &d;
 pB->f();
 return 0;
}

Ответ:

 (1) 20 

 (2) 22 

 (3) 10 


Номер 11
Что выведется на экран в результате работы следующего кода?

class Base
{
 public: 
 Base(int _x=10){x=_x;}
 virtual void f() {cout<<x*2<<endl;}
 protected:
 int x;
};
class Derived: public  Base
{
 public: 
 void f() {cout<<x/2<<endl;}
};
int main()
{
 Derived d;
 Base* pB= &d;
 pB->f();
 return 0;

Ответ:

 (1)

 (2)

 (3) 15 


Упражнение 4:
Номер 1
Какое из приведенных утверждений об абстрактном классе является НЕПРАВИЛЬНЫМ?  

Ответ:

 (1) вы можете создавать указатели на абстрактный класс.  

 (2) вы можете создавать объекты абстрактного класса.  

 (3) абстрактный класс имеет как минимум одну чисто виртуальную функцию.  

 (4) абстрактный класс может иметь потомков.  


Номер 2
Какое из следующих утверждений правильное?  

Ответ:

 (1) дружественность не наследуется. 

 (2) друзья класса не имеют доступа к закрытым членам класса.  

 (3) объявление дружественности двунаправленное.  

 (4) друзья класса имеют доступ к данным всех его потомков.  


Номер 3
Выберите правильные утверждения.

Ответ:

 (1) абстрактный класс не может иметь потомков. 

 (2) класс является абстрактным, если в нем есть виртуальные функции. 

 (3) класс является абстрактным, если в нем есть чисто виртуальные функции. 

 (4) допускается объявление переменной-указателя на абстрактный класс. 


Номер 4
Выберите правильные утверждения.

Ответ:

 (1) класс, имеющий чисто виртуальные функции, не является абстрактным. 

 (2) абстрактный класс нельзя использовать при явном приведении типов для описания типа параметра функции. 

 (3) абстрактный класс нельзя использовать при явном приведении типов для описания типа возвращаемого функцией значения. 

 (4) допускается создание объекта абстрактного класса. 


Номер 5
Выберите правильное утверждение.
Если класс, производный от абстрактного, не определяет все чисто виртуальные функции, он является:

Ответ:

 (1) абстрактным 

 (2) виртуальным 

 (3) открытым 

 (4) закрытым 


Номер 6
Какое из следующих утверждений о классе "derived2" верно для приведенного ниже кода? 

class mybase {}; 
class derived1 {}; 
class derived2:public mybase,derived1{};  

Ответ:

 (1) описание "derived2" неверно, т.к. либо derived, либо mybase должны быть виртуальными.  

 (2) derived2 использует наследование public для mybase и наследование private для derived1.  

 (3) описание "derived2" неверно, т.к. "derived1" должен иметь спецификатор доступа.  

 (4) derived2 использует наследование public для mybase и наследование public для derived1.  

 (5) описание "derived2" неверно, т.к. "derived2" может наследоваться только от одного класса.  


Номер 7
Почему приведенный ниже фрагмент кода НЕВЕРЕН? 

namespace f
 { 
struct Obj { 
    struct T; 
    template<class T, class f> 
    virtual void  f() { 
    } 
 }; 
};  

Ответ:

 (1) здесь все верно.  

 (2) параметр шаблона f конфликтует с именованной областью f.  

 (3) виртуальные методы не могут быть шаблонами.  

 (4) классы и структуры не могут содержать шаблоны методов.  

 (5) предварительное описание Т конфликтует с параметром шаблона T.  


Номер 8
Какое из приведенных ниже утверждений ЛОЖНО в применении к классам?  

Ответ:

 (1) если не определить конструктор копирования, он будет создан по умолчанию.  

 (2) класс может иметь несколько деструкторов.  

 (3) дружественный класс может иметь доступ к private полям и методам другого класса.  

 (4) класс может иметь несколько конструкторов.  

 (5) если не определен конструктор, будет создан конструктор по умолчанию.  


Упражнение 5:
Номер 1
Шаблон функции описан как template<class X, class Y, class Z>void f(Y, Z);
Какой из вызовов этой функции неверный?

Ответ:

 (1) f("Test", 2.0); 

 (2) f<int>("Test", 2.0);  

 (3) f<int, char*, double>("Test", 2.0); 

 (4) f<int, char*>("Test", 2.0);  


Номер 2
Шаблон функции описан как template<class X, class Y, class Z>void f(X, Z);
Какой из вызовов этой функции неверный?

Ответ:

 (1) f("Test", 2.0); 

 (2) f<int>("Test", 2.0);  

 (3) f<int, char*, double>(2, 2.5); 

 (4) f<int, char*>(2, 2); 


Номер 3
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть стандартный тип данных 

 (2) шаблоны методов не могут быть виртуальными. 

 (3) у класса-шаблона могут быть друзья.  

 (4) шаблоны не могут являться базовыми для обычных классов. 

 (5) в классе-шаблоне нельзя объявлять статические поля 


Номер 4
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть тип данных, определенный пользователем 

 (2) шаблоны классов могут содержать статические элементы. 

 (3) шаблоны могут быть друзьями.  

 (4) параметрам шаблонного класса нельзя присваивать значения по умолчанию. 

 (5) шаблонный класс можно объявлять внутри функции.  


Номер 5
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть переменная целого типа 

 (2) шаблоны классов могут содержать дружественные функции. 

 (3) класс может быть объявлен внутри шаблона.  

 (4) параметром шаблона может быть переменная вещественного типа 

 (5) шаблоны методов могут быть виртуальными. 


Номер 6
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть переменная булевского типа 

 (2) шаблон может быть объявлен внутри класса.  

 (3) шаблонный класс нельзя объявлять внутри функции.  

 (4) шаблоны классов не могут содержать статические элементы. 

 (5) шаблоны не могут быть производными от обычных классов. 


Номер 7
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть переменная символьного типа 

 (2) шаблоны могут быть производными от обычных классов. 

 (3) шаблонный класс нельзя объявлять внутри функции.  

 (4) шаблоны классов не могут содержать статические элементы. 

 (5) шаблоны классов не могут содержать дружественные функции. 


Номер 8
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть указатель 

 (2) шаблоны могут являться базовыми для обычных классов. 

 (3) в обычном классе можно объявить шаблонный метод.  

 (4) шаблоны классов не могут содержать дружественные классы. 

 (5) в классе-шаблоне нельзя объявлять статические методы 


Номер 9
Выберите верные утверждения

Ответ:

 (1) параметром шаблона может быть ссылка 

 (2) параметрам шаблонного класса можно присваивать значения по умолчанию. 

 (3) в классе-шаблоне можно объявлять статические методы 

 (4) шаблоны не могут быть производными от обычных классов. 

 (5) параметрам шаблонного класса нельзя присваивать значения по умолчанию. 


Номер 10
Выберите верные утверждения

Ответ:

 (1) шаблоны методов не могут быть виртуальными. 

 (2) шаблоны могут являться базовыми для обычных классов. 

 (3) параметром шаблона может быть только стандартный тип данных 

 (4) шаблоны классов не могут содержать статические элементы. 

 (5) класс не может быть объявлен внутри шаблона.  


Номер 11
Выберите верные утверждения

Ответ:

 (1) шаблоны методов не могут быть виртуальными. 

 (2) параметрам шаблонного класса можно присваивать значения по умолчанию. 

 (3) в обычном классе можно объявить шаблонный метод.  

 (4) шаблоны не могут быть производными от обычных классов. 

 (5) в классе-шаблоне нельзя объявлять статические поля 




Главная / Программирование / Программирование на языке C++ / Тест 6