• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Теория по С ++.

  • Автор темы Автор темы 123er4
  • Дата начала Дата начала
1

123er4

Помогите плз :please: Вот вопросы:

1) Как инициализировать переменную, являющуюся приватным статическим членом класса?

2) Если при создании переменной программист ее явно не инициализировал, то, в некоторых случаях, компилятор сам даст ей некое, заранее известное начальное значение, а в некоторых случаях начальное значение будет непредсказуемо. От чего это зависит?

3) Для чего применяется предварительное объявление (forward declaration) классов?
 
3) Для чего применяется предварительное объявление (forward declaration) классов?
Для исп одним класса другого.Например для Proxi-классов.
 
1)
C++:
class A
{
static int nStatic;
}
... in cpp:
int A::nStatic = 0;

2) Я стандарт не читал :( но думается что она всегда неопределена. Другое дело что отдельные компиляторы по спец свитчам могут, наверное, инициализировать. Тот же VS в отладочном режиме заполняет память известным значением.

3) Случаев много, чаще всего либо взаимное использование:
C++:
class CGroup;
class CStudent
{
CGroup* pGroup;
}

class CGroup
{
CStudent* pList;
}
либо сокрытие реализации:
C++:
class CSuperClassImpl;
class CSuperClass
{
// interface methods
protected:
CSuperClassImpl* pImpl; 
}
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab