Что не является принципом ООП?
Anonymous Poll
11%
Абстрагирование
3%
Инкапсуляция
83%
Многопоточность
2%
Наследование
2%
Полиморфизм
Найдите проблему в коде:
#include<stdio.h>
int main() { int *p = (int *)malloc(sizeof(int)); p = NULL; free(p); }
#include<stdio.h>
int main() { int *p = (int *)malloc(sizeof(int)); p = NULL; free(p); }
Anonymous Poll
31%
free() нельзя применить к NULL-pointer
51%
Утечка памяти
18%
Висячий указатель
free() можно спокойно применить к NULL-pointer. В данном случае проблемой является утечка памяти. Сначала надо вызвать функцию free() на поинтер, а потом присвоить ему значение NULL.
Правильная последовательность:
free(p);
p = NULL;
Правильная последовательность:
free(p);
p = NULL;
В каком сегменте памяти находятся i, j и *k?
int i; int main() { int j; int *k = (int*)malloc(sizeof(int)); }
int i; int main() { int j; int *k = (int*)malloc(sizeof(int)); }
Anonymous Poll
8%
i, j, *k находятся в стеке.
24%
i, j – стек, *k – куча.
63%
i – BSS, j – стек, *k – куча.
5%
j – BSS, i – стек, *k – куча.
Разбираемся в ООП-дизайне, чтобы управлять сложностью проектов:
https://web.archive.org/web/20120102190219/http://www.accu.informika.ru/acornsig/public/articles/ood_intro.html
https://web.archive.org/web/20120102190219/http://www.accu.informika.ru/acornsig/public/articles/ood_intro.html
Если вы хотите создать свой проект, то можете черпать вдохновение из данного источника.
Сайт содержит множество проектов на C/C++ (без ошибок и очепяток)
https://www.codewithc.com/c-projects-with-source-code/
Сайт содержит множество проектов на C/C++ (без ошибок и очепяток)
https://www.codewithc.com/c-projects-with-source-code/
Что выведет программа?
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) { char temp[20]; gcvt(23.45, 3, temp); printf("%s", temp); return 0; }
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) { char temp[20]; gcvt(23.45, 3, temp); printf("%s", temp); return 0; }
Anonymous Poll
9%
0
19%
23.5
23%
23.45000
49%
23.4
Правильный ответ: 23.4
Функция gcvt() превращает число с плавающей точкой в строку. Тройка в аргументе означает, что нужно конвертировать первые три цифры.
Функция gcvt() превращает число с плавающей точкой в строку. Тройка в аргументе означает, что нужно конвертировать первые три цифры.
Так как в С++ нет ключевого слова **interface**, как можно реализовать интерфейсы?
Anonymous Poll
4%
Их нельзя реализовать
5%
Можно реализовать с помощью volatile и explicit
3%
Нужно использовать префикс “I” в названии метода
76%
Можно реализовать с помощью виртуальных функций
10%
В новой версии С++ есть интерфейсы
2%
Импортировать из Java
Правильный ответ не включен в список вариантов.
Интерфейсы можно реализовать с помощью чисто виртуальных функций.
Они специфицирутся тем, что в декларации такой функции присутствует модификатор virtual и "= 0”.
#пример:
Интерфейсы можно реализовать с помощью чисто виртуальных функций.
Они специфицирутся тем, что в декларации такой функции присутствует модификатор virtual и "= 0”.
#пример:
class Box {
public:
// pure virtual function
virtual double getVolume() = 0;
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
Как найти и отпринтить узлы, у которых нет братьев и сестёр?Помимо имплементации на С++, статья содержит псевдокод, поэтому вы сами можете потренироваться и реализовать поиск.
https://teletype.in/@heisenbug/HkxENxDqr
https://teletype.in/@heisenbug/HkxENxDqr
Teletype
Print All Nodes that don't have Sibling
Problem Statement:
Что выведет программа?
#include <iostream> int main(int argc, const char * argv[]) { int a[] = {1, 2, 3, 4, 5, 6}; std::cout << (1 + 3)[a] - a[0] + (a + 1)[2]; }
#include <iostream> int main(int argc, const char * argv[]) { int a[] = {1, 2, 3, 4, 5, 6}; std::cout << (1 + 3)[a] - a[0] + (a + 1)[2]; }
Anonymous Poll
3%
2
6%
4
10%
6
74%
8
7%
10
Правильный ответ: 8
(1+3)[a] – это то же, что и a[1+3]==5
a[0]==1
(a+1)[2] можно записать в виде a[3]==4
В итоге:
5-1+4=8
(1+3)[a] – это то же, что и a[1+3]==5
a[0]==1
(a+1)[2] можно записать в виде a[3]==4
В итоге:
5-1+4=8
Что хранит в себе vtable?
Anonymous Poll
11%
Таблицу данных.
83%
Адреса виртуальных функций.
7%
Данные виртуального окружения.
Что хранит в себе vtable?
Адреса виртуальных функций.
Всякий раз, когда в программе объявляется виртуальная функция, создается координирующая таблица vtable. Она хранит адреса виртуальных функций.
Адреса виртуальных функций.
Всякий раз, когда в программе объявляется виртуальная функция, создается координирующая таблица vtable. Она хранит адреса виртуальных функций.
Какими бывают виды специализации шаблона?
Anonymous Poll
72%
Полная и частичная.
16%
Строго и частично фиксированная.
13%
Мультипоточная и итерационная.
Какими бывают виды специализации шаблона?
Полная и частичная специализация — верный ответ.
Полная и частичная специализация — верный ответ.
С-трюк: Расчет времени между событиями
Фрагмент кода для расчета времени, прошедшего между двумя событиями (к примеру, чтобы выяснить, сколько времени займет выполнение чего-либо).
Фрагмент кода для расчета времени, прошедшего между двумя событиями (к примеру, чтобы выяснить, сколько времени займет выполнение чего-либо).
#include "stdafx.h"
#include <time.h>
#include <windows.h>
#include <stdlib.h>
clock_t startm, stopm;
#define BEGIN if ( (startm = clock()) == -1) \
{ \
printf("clock returned error.");exit(1); \
} \
#define CLOSE if ( (stopm = clock()) == -1) \
{printf("clock returned error."); \
exit(1); \
} \
#define SHOWTIME printf( "%6.3f seconds elapsed.", ((double)stopm-startm)/CLOCKS_PER_SEC);
main() {
BEGIN;
// Specify set of instructions for you want to measure execution time
Sleep(10);
CLOSE;
SHOWTIME;
}
Что в классе? Принципы интерфейса
«Что в классе?» — очень неплохая статья Герба Саттера. Автор утверждает, что можно легко расширить любой класс с помощью простых функций.
Герб Саттер заключает, приводя читателя к трем мыслям:
- Принцип интерфейса: для класса X все функции, включая свободные, являются логически частью X, потому что они образуют часть интерфейса Х.
- Поэтому функции-члены и не члены могут быть логически частью класса. Однако функция-член все еще более тесно связана с классом, чем не член.
- Если функция появляется в том же заголовке, что и класс, она является частью класса с точки зрения зависимостей. Если функция появляется в том же пространстве имен, что и класс, она является частью класса с точки зрения использования объекта и поиска имени.
«Что в классе?» — очень неплохая статья Герба Саттера. Автор утверждает, что можно легко расширить любой класс с помощью простых функций.
Герб Саттер заключает, приводя читателя к трем мыслям:
- Принцип интерфейса: для класса X все функции, включая свободные, являются логически частью X, потому что они образуют часть интерфейса Х.
- Поэтому функции-члены и не члены могут быть логически частью класса. Однако функция-член все еще более тесно связана с классом, чем не член.
- Если функция появляется в том же заголовке, что и класс, она является частью класса с точки зрения зависимостей. Если функция появляется в том же пространстве имен, что и класс, она является частью класса с точки зрения использования объекта и поиска имени.
Последнее и лучшее в Visual Studio 2019 для C++ разработчиков:
YouTube
Latest & Greatest in Visual Studio 2019 for C++ developers - Marian Luparu, Sy Brand - CppCon 2019
http://CppCon.org
—
Discussion & Comments: https://www.reddit.com/r/cpp/
—
Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2019
—
Visual Studio 2019 was released earlier this year, and…
—
Discussion & Comments: https://www.reddit.com/r/cpp/
—
Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2019
—
Visual Studio 2019 was released earlier this year, and…