Библиотека C/C++ разработчика | cpp, boost, qt
21K subscribers
1.57K photos
40 videos
16 files
3.74K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
В каком сегменте памяти находятся i, j и *k?

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 – куча.
Programmer С++ в Playrix

Удалённо
Опыт разработки на С++ от 3 лет

https://prglb.ru/56nl8
​​Разбираемся в ООП-дизайне, чтобы управлять сложностью проектов:
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/
Что выведет программа?
#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() превращает число с плавающей точкой в строку. Тройка в аргументе означает, что нужно конвертировать первые три цифры.
Правильный ответ не включен в список вариантов.
Интерфейсы можно реализовать с помощью чисто виртуальных функций.
Они специфицирутся тем, что в декларации такой функции присутствует модификатор 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
Что выведет программа?

#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
Что хранит в себе vtable?
Адреса виртуальных функций.

Всякий раз, когда в программе объявляется виртуальная функция, создается координирующая таблица vtable. Она хранит адреса виртуальных функций.
Какими бывают виды специализации шаблона?

Полная и частичная специализация — верный ответ.
С-трюк: Расчет времени между событиями
Фрагмент кода для расчета времени, прошедшего между двумя событиями (к примеру, чтобы выяснить, сколько времени займет выполнение чего-либо).

#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, потому что они образуют часть интерфейса Х.

- Поэтому функции-члены и не члены могут быть логически частью класса. Однако функция-член все еще более тесно связана с классом, чем не член.

- Если функция появляется в том же заголовке, что и класс, она является частью класса с точки зрения зависимостей. Если функция появляется в том же пространстве имен, что и класс, она является частью класса с точки зрения использования объекта и поиска имени.
Публикация диаграммы состояния функций, проблем и багов.👍
animation.gif
85.7 KB
C++ Build Insights: новая коллекция инструментов для анализа и ускорения ваших сборок C++. В статье показана возможность самостоятельно вносить улучшения.
Функция C++, возвращающая разные типы в зависимости от стороны вызова
"Вот что-то сумасшедшее: у вас есть функция, которая имеет два разных вызова. Один из них ожидает, что функция вернет widget. Другой ожидает, что функция вернет doodad". Автор статьи Раймонд показывает, как возвращать объект, который еще не знает, является ли он widget или doodad.