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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
el Gato Estelar
 Аватар для el Gato Estelar
9 / 9 / 0
Регистрация: 26.05.2010
Сообщений: 36
#1

Пара вопросов по С++ - C++

16.07.2010, 09:03. Просмотров 1928. Ответов 30
Метки нет (Все метки)

возникло несколько вопросов, с которыми что то не могу никак разобраться

1. Как происходит выравнивание при создании структуры?

C++
1
2
struct { double a; int b; char c;};
struct { char a; int b; double c; };
ведь должны возвращать разный размер? В первом всё достраивается до double, а во втором сначала до int, потом до double? Но тем не менее, проверив в двух компиляторах(в VS2005 и bcc5.5) я получил результат и там и там 16(double=8), который никак не могу понять

2. Про добавление константности
пусть есть класс:

C++
1
2
3
4
5
6
7
8
9
10
11
class A {
public:
 A() {}
 A(const A&) { printf("Copy constructor called\n"); }
 void doSmth() { printf("Non-const method called"); }
 void doSmth() const { printf("Const method called"); }
};
...
A a;
a.doSmth();
(static_cast<const A>(a)).doSmth();
т.е. хочу вызвать константный и неконстантный методы. Но с константным и начинаются проблемы.
C++
1
static_cast<const A>(a)
почему то игнорируется, результат этой конструкции -- класс А(проверял через typeid). Не могу понять почему? Если поставить приведение к ссылке - всё будет работать, оно и понятно - мы просто сообщаем компилятору, что в этой конструкции адресуется объект типа "const A", но почему не срабатывает простое приведение? Я считал, что в этом случае, будет создаваться временный объект нужного типа, но судя по тому, что копирующий конструктор не вызывается, этого не происходит. Почему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,769
Записей в блоге: 26
18.07.2010, 10:30     Пара вопросов по С++ #21
А сам перевод где находится?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 11:21     Пара вопросов по С++ #22
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 12:37     Пара вопросов по С++ #23
Цитата Сообщение от Evg Посмотреть сообщение
А сам перевод где находится?
Как я понял, он еще не опубликован, но и после публикации в том числе и электронные копии автор планирует сделать платными.

Добавлено через 25 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
Извините за философское отступление, но мне кажется, что такое скептическое отношение к национальным языку и мышлению еще раз подтверждают мне мою мысль, что мы, русские, еще не являемся нацией. Самостоятельная и зрелая нация формулирует для себя понятия сама, и осмысливает все сама. Заимствования понятий и теорий у нее происходят путем переосмысления их национальной элитой в национальном культурном контексте. Евреи вон не поленились новый язык для себя выдумать (я имею в виду оживление мертвого языка для разговорных целей), а мы свой богатейший многотысячелетний язык, от которого по последним исследованиям произошли все индоевропейские, пытаемся заменить примитивной английской тарабарщиной.
Недавно по радио кто-то рассказывал, как ему лично говорил один из руководителей американской программистской фирмы: если проект срочный, то мы отдаем его американцам, если большой, то индийцам, а если его реализация кажется невозможной, то русским, и они всегда справляются.
Так что у нас есть все для того, чтобы стать нацией, кроме желания ею стать.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 13:40     Пара вопросов по С++ #24
Mr.X, я может не очень ясно выразился, но имел ввиду, что многие наименования нововведений стандарта не имеют очевидных аналогов в русском языке. И весьма маловероятно, что некто в одиночку сможет граммотно их подобрать. Над переводом должны трудится профессиональные лингвисты и программисты, а не непонятно кто. Только никто этим заниматься не будет - кому стандарт интересен, то его и в оргинале без проблем прочтет.
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 14:29     Пара вопросов по С++ #25
CyBOSSeR, так я то же самое и имел в виду. Нация – это народ, который имеет приверженную к нему национальную элиту (властную, научную, религиозную и художническую), которая смыслом своего существования считает обслуживание своей нации в сфере своей компетенции и продвижение национального проекта во всех аспектах.
Как только такая элита у нас появится, мы и станем нацией. А пока эти функции у нас выполняют энтузиасты-одиночки. Мне кажется, за это их стоит только благодарить.
По первому впечатлению стандарт там переводит человек довольно компетентный, так что пока не стоит падать духом.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,769
Записей в блоге: 26
18.07.2010, 14:55     Пара вопросов по С++ #26
Mr.X, те, кто из русских хорошо знают английский, утверждают, что Шекспира имеет смысл читать только в оригинале, перевод полной картины не доносит. Аналогично Пушкина надо читать только в оригинале. В каждом языке есть куча особенностей, которые нормально на другой язык не переводятся. Английский язык в силу своих лингвистических особенностей, судя по всему, лучше подходит для технических описаний, особенно когда надо придумывать новые термины. А размышления про нации, элиты и прочие высокие материи - это не более чем демагогия
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 18:11     Пара вопросов по С++ #27
Цитата Сообщение от Evg Посмотреть сообщение
...не более чем демагогия
Где-то я читал такую рекомендацию: если у тебя в споре нет аргументов, то обвиняй оппонента в демагогии.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
18.07.2010, 18:13     Пара вопросов по С++ #28
Mr.X, можешь в каждом вопросе по стандарту отвечать, что ждешь русского перевода, благо никогда не дождешься
Nameless One
19.07.2010, 12:35
  #29

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Где-то я читал такую рекомендацию: если у тебя в споре нет аргументов, то обвиняй оппонента в демагогии.
А я почему-то аргументы увидел. Я один такой?

M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
19.07.2010, 13:44     Пара вопросов по С++ #30
прекращаем оффтоп.

Mr.X, хотите обсудить проблемы русской нации - создайте отдельную тему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2010, 11:34     Пара вопросов по С++
Еще ссылки по теме:

Пара глупых вопросов C++
Конструкторы и деструкторы при наследовании. Пара вопросов C++
Вектор и пара C++
C++ Пара вопросов по C++ 11
C++ Структура-пара

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.09.2010, 11:34     Пара вопросов по С++ #31
Цитата Сообщение от el Gato Estelar Посмотреть сообщение
В первом всё достраивается до double, а во втором сначала до int, потом до double?
Выравнивание происходит без достраивания. И выравнивается на ближайшее кратноё определённому шагу (может и перменому). В твом случае 4. Чётнократное тоже ведь кратное, что позволяет выравнивать дабл до инта.

Добавлено через 3 минуты
Цитата Сообщение от el Gato Estelar Посмотреть сообщение
будет A, а не const A
А чем они различаются кроме не возможности модификации? И куда ты присваиваешь результат приведения? Уверен что при этом не происходит обратное преобразование?
Yandex
Объявления
21.09.2010, 11:34     Пара вопросов по С++
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru