@ProCxx

Страница 193 из 2477
Alex Фэils?︙
27.05.2016
04:48:43
Сам напарывался когда-т

grinchfox
27.05.2016
04:51:41
а можно forward декларации template классов ?

Alex Фэils?︙
27.05.2016
04:52:30
Вроде да

Друзья, не подскажете кроссплатформенного способа защиты от целочисленного переполнения при умножении двух чисел?

Google
Aldar
27.05.2016
20:06:20
использовать long long?

Alex Фэils?︙
27.05.2016
20:06:26
Нет

Aldar
27.05.2016
20:06:58
это нормально работает если числа в основном из диапазона int

Alex Фэils?︙
27.05.2016
20:07:20
Если ты умножишь два числа, которые будут размером в половину лонг лонга, у тебя будет переполнение

Alex Фэils?︙
27.05.2016
20:08:00
Я на x86 писал макрос с _asm jo

Проверять числа
Это медленно ?

ivario
27.05.2016
20:08:58
Это медленно ?
Использовать длинную арифметику, ещё медленнее

Alex Фэils?︙
27.05.2016
20:13:33
смотря как ты ее напишешь

Но тут опять не х-платформенное

На втором собеседовании в интел я с сотрудниками решал задачу на асме

Google
Alex Фэils?︙
27.05.2016
20:14:33
Не успели, регламент кончился(

Они эту задачу вообще чуть ли не в конце дали

Друзья, не подскажете кроссплатформенного способа защиты от целочисленного переполнения при умножении двух чисел?
Нашел советы в https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/BufferOverflows.html

if (n > 0 && m > 0 && SIZE_MAX/n >= m) { size_t bytes = n * m; ... /* allocate “bytes” space */ }

Andrei
27.05.2016
20:58:35
Ну да

Это единственное правильное с тз языка проверка на переполнение

Я на собеседовании такую же давал, только с суммой

Где-то 3-4 заданием по плюсам. Те в самом начале почти

Aldar
27.05.2016
21:00:24
Задайте вопросы для собеседования по плюсам

Alex Фэils?︙
27.05.2016
21:01:01
Ну да
Блин, я сам такую пижню делал, как я мог забыть..(

Блин, я сам такую пижню делал, как я мог забыть..(
Только я обычно проверки на 0 опускал в тех случаях, когда точно знал, что числа без знака (они обычно имели тип size_t)

Aldar
27.05.2016
21:05:30
ок я начну с классики, что такое виртуальный деструктор, для чего нужен?

Alex Фэils?︙
27.05.2016
21:06:03
?

arisu
27.05.2016
21:06:07
чтобы о нем спрашивать.

чтобы деструктор правильно отрабатывал при приведении к базовому типу.

и не происходило частичного разрушения

? Snyp
27.05.2016
21:06:33
пиздец, понятий вагон

я так и не понял чем отличается виртуальная функция от базовой.

Alex Фэils?︙
27.05.2016
21:06:47
Google
Alex Фэils?︙
27.05.2016
21:07:00
^
Да)

arisu
27.05.2016
21:07:25
Aldar
27.05.2016
21:07:26
Что значит при приведении к базовому типу7

? Snyp
27.05.2016
21:07:27
путаешь теплое и мягкое
я и говорю, не понимаю.

Alex Фэils?︙
27.05.2016
21:07:54
я так и не понял чем отличается виртуальная функция от базовой.
Виртуальная функция - функция, которая может быть переназначена в производном классе

? Snyp
27.05.2016
21:07:55
Вот, ворпосы полетели

не я 1 такой

arisu
27.05.2016
21:08:15
это ж хорошо.

arisu
27.05.2016
21:08:21
больше вопросов - больше ответов

Alex Фэils?︙
27.05.2016
21:08:36
Виртуальная функция - функция, которая может быть переназначена в производном классе
Так, что можно спокойно передавать указатель на базовый класс, и вызовется нкжный метод

arisu
27.05.2016
21:08:39
Alex Фэils?︙
27.05.2016
21:08:40
? Snyp
27.05.2016
21:08:45
это ж хорошо.
поугарать в особенности. когда ты сидишь такой серьезный и хочешь выяснить что к чему - и тут угар)

Alex Фэils?︙
27.05.2016
21:08:46
arisu
27.05.2016
21:09:02
унаследованные типы могут переопределить методы базового, но только те, которые в базовом виртуальные

Aldar
27.05.2016
21:10:17
вот допустим есть класс A, B наследник А

Alex Фэils?︙
27.05.2016
21:10:39
Google
Aldar
27.05.2016
21:10:40
я пишу A a = B();

так можно делать?

arisu
27.05.2016
21:11:35
отож.

B это частный тип от А

поэтому в обратную сторону приведение возможно

Admin
ERROR: S client not available

arisu
27.05.2016
21:12:29
и оперировать B можно как объектом типа А

в этом суть ООП даже

? Snyp
27.05.2016
21:12:48
это муть а не суть)

Aldar
27.05.2016
21:13:03
а если мы добавим в B новое поле int?

arisu
27.05.2016
21:13:42
да хоть десять.

Andrei
27.05.2016
21:14:01
только это слайсинг.

Aldar
27.05.2016
21:14:26
?

Andrei
27.05.2016
21:14:32
A a= B(); вообще довольно поганая конструкция, но даже если предположить что всё ок.

Aldar
27.05.2016
21:14:39
мы вам перезвоним

? Snyp
27.05.2016
21:14:47
?

Andrei
27.05.2016
21:14:47
после ; будет вызван деструктор B()

arisu
27.05.2016
21:15:18
а вот это неочевидно, кстати

Andrei
27.05.2016
21:15:23
Здесь будет просто копирование.

В любом случае.

Google
Сергей
27.05.2016
21:15:33
Aldar
27.05.2016
21:15:35
здесь будет копирование со срезкой

Andrei
27.05.2016
21:15:43
а потом деструктор

Так что да, здесь все-таки слайсинг есть.

Всё правильно сказал.

Aldar
27.05.2016
21:16:17
в общем верно работать либо с указателями либо с ссылками

arisu
27.05.2016
21:16:31
B b = B(); A& a = b;

так?

Alex Фэils?︙
27.05.2016
21:16:38
Блин, пока из элки вылезал, весь попкорн пропустил

Aldar
27.05.2016
21:16:42
да

тогда слайсинга нету

Andrei
27.05.2016
21:16:56
B b = B(); A& a = b;
B b; достаточно в первой строчке

arisu
27.05.2016
21:17:08
да, я что-то совсем обжабился

Сергей
27.05.2016
21:17:10
Мда

arisu
27.05.2016
21:17:11
и обзмеился

Сергей
27.05.2016
21:17:15
Отправилось через сто лет

Andrei
27.05.2016
21:17:36
тогда слайсинга нету
но если захотеть, даже тут его можно спровоцировать.

Страница 193 из 2477