Результаты прохождения теста C++ основы пользователем Валерий_Жбанов

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

+112

После удаления экземпляра класса его статические члены:
Ваши ответы
продолжают существовать даже когда не остаётся ни одного экземпляра класса
Объяснение:

Статические члены класса существуют даже когда нет ни одного экземпляра класса, в котором они определены.

Что выведет cout?
#include <iostream> 
 
using namespace std; 
 
int &test() { 
   static int a = 3; 
   return a; 
} 
 
int main() { 
   ++++++test(); 
 
   cout << test() << endl; 
   return 0; 
}
Ваши ответы
6
Объяснение:

int & является lvalue.

Что будет выведено на экран в результате выполнения программы?
#include <iostream> 
void func(int num); 
 
int main(void) 
{ 
   func(5); 
   return 0; 
} 
 
void func(int num) 
{ 
   if(num) 
       func(num-1); 
   std::cout << num; 
}
Ваши ответы
012345
Объяснение:

Обычная рекурсивная функция

Что будет напечатано?
int main() 
{ 
   for (int i = 0; i < 4; ++i) 
   { 
      switch (i) 
      { 
         case 0  : std::cout << "0"; 
         case 1  : std::cout << "1"; continue; 
         case 2  : std::cout << "2"; break; 
         default : std::cout << "D"; break;//n 
      } 
      std::cout << "."; 
   } 
   return 0; 
}
Ваши ответы
0112.D.
Что выведет на экран следующая программа?
#include <iostream> 
 
int main() 
{ 
    int k = 3, m = 5;  
    std::cout << 25 / m << " and " << 17 / k;  
    return 0; 
} 
Ваши ответы
5 and 5
Объяснение:

Целочисленное деление 25 на 5 = 5, целочисленное деление 17 на 3 = 5.

Что выведет в консольное окно данный программный код?
#include <iostream> 
#include <climits> 
 
using namespace std; 
 
int main() 
{ 
   int nInt = INT_MAX; 
   int nCharBit = CHAR_BIT; 
 
   cout << "Width nInt " << nInt<<endl; 
   cout << "Width nCharBit" << nCharBit << endl; 
 
   return 0; 
} 
Ваши ответы
Зависит от реализации.
Объяснение:

В стандарте С++ под байтом понимается фундаментальная единица хранения данных, состоящая из непрерывной последовательности бит, число которых должно быть достаточным, чтобы можно было бы вместить любой член базового набора символов. Базовый набор ASCII, например, состоит из символов, которые можно представить набором из 8 бит, поэтому системы основанные на ASCII, UTF-8 используют байт 8-битный, так как восемь бит вполне достаточно, чтобы закодировать любой член основного базового набора. Системы основанные на UNICODE в одном байте могут, например, содержать 16 или 32 бит. Целое int может оказаться и 16-битным, и 32-битным, и даже шириной 64 бит — главное, что оно не может быть меньше 16 бит. Все зависит от реализации базового набора символов.

Что будет выведено на экран?
class IClass { 
public: 
   void Print() {}; 
}; 
class Class1:public IClass { 
public: 
   void Print() { std::cout << 1; }; 
}; 
class Class2 :public IClass { 
public: 
   void Print() { std::cout << 2; }; 
}; 
class Class3 :public IClass { 
public: 
   void Print() { std::cout << 3; }; 
}; 
void Print(IClass* c) { 
   c->Print(); 
} 
int main() { 
   Print(new Class1()); 
   Print(new Class2()); 
   Print(new Class3()); 
   return 0; 
}
Ваши ответы
Ничего
За что отвечает аргумент argv?
int main(int argc, char* argv[])
Ваши ответы
Массив указателей на аргументы, которые передаются в качестве строковых переменных.
Объяснение:

Аргумент argv является массивом указателей на аргументы, которые передаются в программу при запуске. То есть каждый элемент массива является указателем на одно слово.

Можно ли комбинировать модификаторы знаковости и размера?
Ваши ответы
Да
Объяснение:

Комбинирование модификаторов размера и знаковости позволяется. То есть следующая запись является возможной:

signed long long int

Каков результат работы следующей программы?
#include<iostream>
 
using namespace std;
 
void f() {
    static int i;
    ++i;
    cout << i << " ";
}
 
main() {
    f();
    f();
    f();
}
Ваши ответы
1 2 3
Каков размер следующего определения объединения?
#include<iostream>
 
using namespace std;
 
main() {
    union abc {
        char a, b, c, d, e, f, g, h;
        int i;
    };
 
    cout << sizeof(abc);
}
Ваши ответы
4
Каков результат работы следующей программы?
#include<iostream>
 
using namespace std;
 
void main() {
    char *s = "C++";
    cout << s << " ";
    s++;
    cout << s << " ";
}
Ваши ответы
C++ ++
Что выведет такой код?
#include <iostream> 
 
struct A 
{ 
   virtual void method() const { std::cout << "A" << std::endl; } 
   virtual ~A(){} 
}; 
 
struct B : A 
{ 
   virtual void method() { std::cout << "B" << std::endl; } 
}; 
 
int main() { 
   A * ptr = new B();  
   ptr->method(); 
   delete ptr; 
   return 0; 
} 
Ваши ответы
B
Объяснение:

Типичная ошибка новичка с перегрузкой. Квалификаторы const и volatile входят в сигнатуру функции. Таким образом, в структуре B мы ничего не перегружаем, а объявляем совершенно новую виртуальную функцию. В С++11 есть полезное ключевое слово override, которое позволяет контролировать такие вещи. "virtual void method() override" в B не скомпилируется, т. к. ничего не перегружает.

Что выведет данный участок кода?
int *foo(int *ptr){ 
   ++(*ptr); 
   return ptr; 
} 
 
void main(){ 
   std::cout << *foo(0); 
}
Ваши ответы
1
Объяснение:

Передаем в функцию нулевой указатель, при попытки разименовать его возникнет ошибка времени выполнения.

Содержит ли этот код ошибки компиляции?
class A { 
 static void Foo(); 
}; 
 
static void A::Foo() { } 
Ваши ответы
Нет
Объяснение:

модификатор static нельзя использовать для определения членов класса вне декларации класса