1. Какие есть 3 базовых принципа ООП?

advertisement
1. Какие есть 3 базовых принципа ООП?
2. Какие виды полиморфизма существуют в C ++?
3. Нарисуйте диаграмму наследования классов «Фигура», «Окружность», «Квадрат»,
«Прямоугольник»
4. Что такое ромбовидное наследование? Какие возникают проблемы и как их
решать?
5. Что выведет на экран следующий код?
template <int a>
void f()
{
std::cout << a;
}
void g()
{
for (int i = 0; i < 5; i++)
f<i>();
}
1. Может ли быть конструктор виртуальным? Может ли быть деструктор
виртуальным?
2. Зачем нужен виртуальный деструктор ?
3. Что такое чисто-виртуальная функция?
4. Будет ли компилироваться следующий код? Что мы получим в результате?
class CClass
{
public:
CClass() {}
virtual ~CClass() = 0
{
DoSomeStuff();
}
};
1. В чем отличие стабильной сортировки от обычной? (Другими словами, в чем
отличие std :: stable _ sort от std :: sort )
2. Что такое смарт-пойнтер ?
3. Что вы используете из STL ? (Если человек не использует алгоритмы, то спросить
почему.)
4. Реализуйте функцию переворота строки
5. Реализуйте функцию strcpy из стандартной библиотеки С
6. Какое значение будет у ptr после выполнения следующего кода?
int *ptr = (int*)0x01;
ptr++;
1. Какое значение будет у var (6)?
int var = 0xfe & 3 << 1;
1. Какой вариант объявления указателя на функцию правилен?
typedef void (*func_ptr)(void);
typedef void (*)func_ptr(void);
typedef void func_ptr()(void);
1. Где содержится ошибка(ки) в следующем коде?
class B {
int a;
public: int b;
protected: int c;
private: int d;
};
class D: public B {
int fa() {return a;}
int fb() {return b;}
int fc() {return c;}
int fd() {return d;}
}
1. Что выведет следующий код?
class B{
public: virtual void prn() {cout << "B";}
};
class D : public B{
public: virtual void prn() {cout << "D";}
};
void f(B b) {
b.prn();
}
Void g(B &b) {
b.prn();
}
int main() {
B* pB = new D;
pB->prn();
f(*pB);
g(*pB);
1. Что такое срез класса (таблицы виртуальных функций)?
2. Что выведет следующий код?
class B {
public: B(char c) { cout << c;}
};
class D {
public : B bB, bA, bC;
D(void) : bA(‘a’), bB(‘b’), bC(‘c’) {}
};
int main() {
D d;
}
1. Какое значение будет у переменной value ?
int foo(int value)
{
return value++;
}
void main()
{
int value = foo(100);
}
1. Чему будет равно значение переменной j после выполнения следующего кода?
int data[2] = {0,1};
int *i = &data[0];
int j = *i++;
1. Взаимозаменяемы ли шаблоны и виртуальные функции? Можно ли одно
эмулировать другим?
2. Что выведется в результате выполнения этого кода?
void f()
{
std::cout << "a";
try
{
std::cout << "b";
try
{
std::cout << "c";
throw 1;
}
catch (char)
{
std::cout << "d";
throw;
}
catch (...)
{
std::cout << "e";
throw;
}
catch (int i)
{
std::cout << "f";
throw (i + 1);
}
}
catch (unsigned int i)
{
std::cout << i;
}
catch (int i)
{
std::cout << i;
}
}
void main()
{
f();
}
1. Что выведет следующий код ?
#include <iostream>
void F1();
void F2();
class Base
{
public:
Base() {}
};
class Derived : public Base
{
public:
Derived() {}
};
int main()
{
F1();
return 0;
}
void F1()
{
try
{
F2();
}
catch(Derived)
{
std::cout << "F1()
}
catch(Base)
{
std::cout << "F1()
}
catch(...)
{
std::cout << "F1()
}
}
void F2()
{
try
{
throw Derived();
}
catch(Base)
{
std::cout << "F2()
throw;
}
catch(...)
{
std::cout << "F2()
throw;
}
}
: Derived\n";
: Base\n";
: ...\n";
: Base\n";
: ...\n";
1. Будет ли компилироваться следующий код? Если да, то в каких случаях. Если нет,
то почему ?
template <typename T>
struct Type2Type{
typedef T AnotherType;
};
template <typename T>
class A
{
T::AnotherType var;
A()
{
var = 0;
}
};
template <typename T>
void f(T v)
{
A<Type2Type<T>> a;
}
int main()
{
f(1);
}
Download