Форум программистов, компьютерный форум CyberForum.ru

Шаблоны, наследование и размер типа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Получить целочисленную матрицу порядка 7, элементами которой являются числа 1, 2, …, 49, расположенные в ней по спирали. http://www.cyberforum.ru/cpp-beginners/thread705234.html
помогите на с++ прогу написать получить целочисленную квадратую матрицу порядка 7,элементами которого являються числа 1,2,...,49 ,расположенные по спирали от нижнего правого угла против часовой стрелки».
C++ Почему чтобы корректно отображались русские буквы в консоли, мало изменить кодировку Последнее-то что даёт? Имеем: printf ("sы");на выходе- s<кракозябр> а почему? смотрим, что у нас в экзешнике, там где должно быть "sы". А там таких два байта (ну то есть кодовая таблица 1251 в миниатюре) s->0X73 ы->0Xfb Разбираемся, что происходит, при печати. А происходит следующее: мы говорим консоли: "консоль, напечатай два байта 0X73 и 0Xfb" После чего консоль смотрит в СВОЮ... http://www.cyberforum.ru/cpp-beginners/thread705233.html
C++ Длинно-плавающая запятая
Я хочу числовой тип с плавающей запятой и очень большим sizeof, стандартного такого нет: sizeof(float)=4. sizeof(double)=8. sizeof(long double)=12., а я хочу на много больше. Например, 1024 байта. Пусть это будет класс, внутреннее представление - массив байтов. Как принято хранить порядок? Какое лучше взять основание порядка? 2? 10? 16? 256? 2^n, где n - количество бит в байте, не привязываясь...
C++ Php и C++ одновремменное изучение
Здравствуйте народ у меня вопрос: Возможно ли одновреммено изучать php и c++? И еше как "правильно" изучать ЯП? (просто начал месяц назад учить c++ по книге "Программирование.Принцыпы и практика использования C++" и дошел тока до 4 главы)
C++ Как одновременно декларировать векторное и скалярное произведение векторов? http://www.cyberforum.ru/cpp-beginners/thread705219.html
В обоих случаях умножается вектор на вектор. Нельзя же перегрузить по типу значения.
C++ и еще одна задача на последовательности Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента. Определить, образуют ли эта последовательность арифметическую прогрессию. подробнее

Показать сообщение отдельно
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
22.11.2012, 09:11     Шаблоны, наследование и размер типа
Суть вопроса в том, что имея два шаблона класса, унаследованных от общего предка, и инстанциируя "один другим"
имеем + n байт к размеру типа (по крайней мере на gcc). Надеюсь я понятно выразился) Вот пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
 
struct base {};
 
template<typename Type>
struct left : base {
 
   Type value;
};
 
template<typename Type>
struct right : base {
 
   Type value;
};
 
 
struct padding {
   char _padding_[32];
};
 
 
int main() {
   std::cout << "sizeof padding              = " << sizeof (padding)              << std::endl;
   std::cout << "sizeof left<padding>        = " << sizeof (left<padding>)        << std::endl;
   std::cout << "sizeof right<padding>       = " << sizeof (right<padding>)       << std::endl;
   std::cout << "sizeof left<right<padding>> = " << sizeof (left<right<padding>>) << std::endl;
   std::cout << "sizeof right<left<padding>> = " << sizeof (right<left<padding>>) << std::endl;
}
вывод
Код
sizeof padding              = 32
sizeof left<padding>        = 32
sizeof right<padding>       = 32
sizeof left<right<padding>> = 33
sizeof right<left<padding>> = 33

http://ideone.com/0VnYCB
Если не наследовать оба сразу, то эффект исчезает. Никак не соображу, в связи с чем это происходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru