Результаты прохождения теста C++ основы пользователем NikitaZ

Результат прохождения теста "C++ основы" - Не пройден

+30

  • Кто проходил: NikitaZ
  • Дата прохождения: 08.01.2019
Скомпилируется ли следующий код:
int foo(); 
char foo(); 
Ваши ответы
Нет
Объяснение:

нет, т.к. две функции отличаются только типом возвращаемого значения, но тип возвращаемого значения функции не участвует при разрешении перегрузки.

Отметьте синтаксически корректные вызовы функции
int f(const char*, int, ...);
Ваши ответы
int n = f("ABC",1,2,3);
Объяснение:

В вопросе представлено объявление функции с переменным числом параметров, с двумя обязательными параметрами const char*, int. При объявлении функции с переменным числом параметров, компилятор перестает отслеживать типы параметров, которые могут быть переданы в функцию на месте многоточия, а следит только чтобы первый параметр был const char*, а второй int. Следовательно, неверный только 4й вариант ответа:
int n = f("ABC");

Какие строчки нужно закомментировать, что бы скомпилировался следующий фрагмент кода:
class A 
{ 
public: 
   int l; 
 
protected: 
   int m; 
 
private: 
   int n; 
}; 
 
 
class B : public A 
{ 
public: 
   int l; 
 
protected: 
   int m; 
 
   void func2() 
   { 
       l = A::l;   // 1 
       m = A::m;   // 2 
       n = A::n;   // 3 
   } 
 
private: 
   int n; 
}; 
Ваши ответы
3
Какая проблема в данной программе?
#include <iostream> 
#include <cstring> 
 
char * CutString(const char * str1) 
{ 
   char str2[4];  
   strncpy(str2, str1, 3);  
   str2[3] = '\0';    //1  
   return str2;   
} 
 
int main() 
{ 
     char * s = CutString("aaaaaaa"); 
     std::cout<<(s); 
} 
Ваши ответы
Неопределенное поведение, так как str2 не будет существовать на момент cout
Объяснение:

После выхода из функции str2 перестает существовать, потому cout ее не выведет.

Что будет выведено ?
#include <iostream> 
 
const int SIZE = 5; 
 
struct tester 
{ 
   void foo() 
   { 
       std::cout << SIZE << std::endl; 
   } 
 
   enum  
   { 
       SIZE = 3 
   }; 
}; 
 
int main(int argc, char** argv) 
{ 
   tester t; 
   t.foo(); 
   return 0; 
} 
Ваши ответы
3
Объяснение:

Поскольку enum SIZE объявлено внутри класса, то оно "закрывает" собой глобальную переменную при поиске такого имени в методах класса.
Подробнее:
http://en.cppreference.com/w/cpp/language/lookup

Что выведет следующий код?
#include <iostream> 
using namespace std; 
 
struct SomeType { 
   void someMethod(); 
   static int cnt; 
}; 
 
int SomeType::cnt; 
 
void SomeType::someMethod() { 
  cout << "cnt" << cnt; 
  ++cnt; 
} 
 
int main() { 
 SomeType someVar; 
 SomeType *ptrSomeType = new SomeType();       
 (*ptrSomeType).someMethod();  
 delete ptrSomeType; 
 (&someVar)->someMethod();           
 return 0; 
} 
Ваши ответы
Будет ошибка компиляции
Объяснение:

Статические переменные (любые - глобальные, локальные, члены класса) всегда инициализируются нулем. Вызовы (*ptrSomeType).someMethod(); и (&someVar)->someMethod(); равнозначны.

Что будет выведено на экране?
#include <iostream> 
using namespace std; 
 
int main() 
{  
   bool A, B = true; 
   bool C = false; 
   int temp = 0; 
   char String[] = "lalalala..."; 
   char *p_String = String; 
 
   while (*p_String) 
   { 
       p_String++; 
       ++temp; 
   } 
 
   A = *p_String; 
   if (temp == 12) A = true; 
 
   if ( (A != C) && (A != B) | (B != C) ) cout << "true"; 
   else cout << "false"; 
 
   cout << temp; 
   return 0; 
} 
 
Ваши ответы
true12
Как сделать доступными protected-члены базового класса в производном от него классе?
Ваши ответы
Использовать public наследование
Объяснение:

Использовать директиву using base::member.

В каких строчках кода функции main содержатся ошибки создания объектов классов A и B?
#include <iostream> 
 
using namespace  std; 
 
class A 
{ 
public: 
   A() 
   { 
       n = 0; 
   } 
 
   explicit A( int t) 
   { 
    n = t; 
   } 
 
   int n; 
}; 
 
class B 
{ 
public: 
   B(int t) 
   { 
       n = t; 
   } 
 
   int n; 
}; 
 
int main(int argc, char *argv[]) 
{ 
   A a1 = 7;           // 1 
   A a2;               // 2 
   A a3 = A(7);        // 3 
   A a4(7);            // 4 
   B b1 = 6;           // 5 
   B b2 = B(6);        // 6 
   B b3;               // 7 
   return 0; 
}
Ваши ответы
2
Что будет выведено на экран?
class A1 
{ 
public: 
      virtual void k(){std::cout << "A1";} 
}; 
 
 
class B1: public A1 
{ 
public: 
       void k(){std::cout << "B1";} 
}; 
 
 
void function(A1 a) 
{ 
      a.k(); 
} 
 
int main() 
{ 
  B1 b; 
  function(b); 
} 
Ваши ответы
B1
Объяснение:

При передаче объекта в функцию по значению мы передаем копию значения объекта, а для этого вызывается конструктор копии. Так как параметром функции является объект класса А1, то и конструктор копии вызывается для А1, следовательно копия будет объектом класса А1. Если бы объект передавался не по значению, а по ссылке тогда вызвалась бы функция k() из класса B1, поскольку она объявлена виртуальной.

Что выведет данный кусок кода ?
unsigned int a = 3; 
unsigned int b = 4; 
 
   if (a & b) { 
       std::cout << "AND :True "; 
   } 
   if (a | b) { 
       std::cout << "OR :True "; 
   } 
   if (a ^ b) { 
       std::cout << "XOR :True "; 
   }
Ваши ответы
OR :True
Перечислите все правильные способы объявления локальной константы в блоке кода.
Ваши ответы
const int size;
Каков результат работы следующей программы?
#include <iostream>
 
using namespace std;
 
int main () {
    int x = 1;
 
    switch(x) {
        case 1:
            cout << "Hi!" << endl;
            break;
        default:
            cout << "Hello!" << endl;
    }
}
Ваши ответы
HelloHi
Какой символ разрешен в имени идентификатора переменной?
Ваши ответы
@
Каков результат работы следующей программы?
#include<iostream>
 
using namespace std;
 
int x = 5;
int &f() {
    return x;
}
 
main() {
    f() = 10;
    cout << x;
}
Ваши ответы
Ошибка компиляции