Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2019, 22:01   #1
fr0st1k123
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 53
По умолчанию Объясните как работает фрагмент кода

Здравствуйте, объясните что на консоли появится после выполнения этого фрагмента программы.
Что значит ~? и !i ?
Разъясните пожалуйста подробно как работает данный фрагмент.
Код:
class A { public: A() { cout << 1; }
 
~A(){ cout << 2; }
 
};
 
class B : public A{
 
public: B(){ cout << 3; }
 
~B() { cout << 4; }};
 
void main() {
 
static int i;
 
if(!i){
 
B obj;
 
}
 
cout<<endl;
 
system("pause");
 
}
fr0st1k123 вне форума Ответить с цитированием
Старый 22.07.2019, 22:38   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

~ - предположу, что это деструктор. Он вызывается при удалении объекта
!i - boolean выражение, которое проверяет, что i не... true или false)))). Только я бы проинициализировал i (ну так, на всякий)
А чтобы понять как это функционирует, нужно знать порядок вызова конструкторов и соответственно деструкторов.

А вот и вывод:
Код:
1342
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 22.07.2019 в 22:46.
Bugrimov вне форума Ответить с цитированием
Старый 09.08.2019, 14:09   #3
CppLinux345
Пользователь
 
Регистрация: 26.09.2018
Сообщений: 23
По умолчанию

Создаётся а после удаляется объект класс B.
Вывод: 1324(A()B()~B()~A())
CppLinux345 вне форума Ответить с цитированием
Старый 09.08.2019, 14:12   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

CppLinux345, т.е. вы не подумали и даже код в компилятор не вставили, чтоб проверить, и просто пост решили набить?
p51x вне форума Ответить с цитированием
Старый 09.08.2019, 14:47   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Последовательность вызовов конструкторов и деструкторов правильная, а цифры - нет
Black Fregat вне форума Ответить с цитированием
Старый 09.08.2019, 14:48   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

Ну так выводится на экран цифры, а не деструкторы.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фрагмент кода ciy Общие вопросы Delphi 3 24.04.2017 17:53
Подправить фрагмент кода Программистер Общие вопросы Delphi 0 19.01.2017 19:21
Объясните фрагмент кода ka11n Общие вопросы C/C++ 4 04.09.2014 16:27
Фрагмент кода по алгоритму Студент8565 Помощь студентам 4 12.05.2013 17:42
Фрагмент кода С++ Роман Кор Общие вопросы C/C++ 6 22.02.2009 19:25