Разбираемся в ООП-дизайне, чтобы управлять сложностью проектов:
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…
Публикация диаграммы состояния функций, проблем и багов.👍
animation.gif
85.7 KB
C++ Build Insights: новая коллекция инструментов для анализа и ускорения ваших сборок C++. В статье показана возможность самостоятельно вносить улучшения.
Функция C++, возвращающая разные типы в зависимости от стороны вызова
"Вот что-то сумасшедшее: у вас есть функция, которая имеет два разных вызова. Один из них ожидает, что функция вернет widget. Другой ожидает, что функция вернет doodad". Автор статьи Раймонд показывает, как возвращать объект, который еще не знает, является ли он widget или doodad.
"Вот что-то сумасшедшее: у вас есть функция, которая имеет два разных вызова. Один из них ожидает, что функция вернет widget. Другой ожидает, что функция вернет doodad". Автор статьи Раймонд показывает, как возвращать объект, который еще не знает, является ли он widget или doodad.
Microsoft News
How can I have a C++ function that returns different types depending on what the caller wants?
Quantum superposition comes to C++.