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

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

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

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", но почему не срабатывает простое приведение? Я считал, что в этом случае, будет создаваться временный объект нужного типа, но судя по тому, что копирующий конструктор не вызывается, этого не происходит. Почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 09:03     Пара вопросов по С++
Посмотрите здесь:

пара вопросов по GUI C++
C++ вставление строк и пара вопросов
Пара вопросов про массивы C++
C++ Пара вопросов по функторам stl
Пара вопросов по итераторам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16827 / 5248 / 321
Регистрация: 30.03.2009
Сообщений: 14,132
Записей в блоге: 26
18.07.2010, 10:30     Пара вопросов по С++ #21
А сам перевод где находится?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 11:21     Пара вопросов по С++ #22
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
18.07.2010, 12:37     Пара вопросов по С++ #23
Цитата Сообщение от Evg Посмотреть сообщение
А сам перевод где находится?
Как я понял, он еще не опубликован, но и после публикации в том числе и электронные копии автор планирует сделать платными.

Добавлено через 25 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
Извините за философское отступление, но мне кажется, что такое скептическое отношение к национальным языку и мышлению еще раз подтверждают мне мою мысль, что мы, русские, еще не являемся нацией. Самостоятельная и зрелая нация формулирует для себя понятия сама, и осмысливает все сама. Заимствования понятий и теорий у нее происходят путем переосмысления их национальной элитой в национальном культурном контексте. Евреи вон не поленились новый язык для себя выдумать (я имею в виду оживление мертвого языка для разговорных целей), а мы свой богатейший многотысячелетний язык, от которого по последним исследованиям произошли все индоевропейские, пытаемся заменить примитивной английской тарабарщиной.
Недавно по радио кто-то рассказывал, как ему лично говорил один из руководителей американской программистской фирмы: если проект срочный, то мы отдаем его американцам, если большой, то индийцам, а если его реализация кажется невозможной, то русским, и они всегда справляются.
Так что у нас есть все для того, чтобы стать нацией, кроме желания ею стать.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 13:40     Пара вопросов по С++ #24
Mr.X, я может не очень ясно выразился, но имел ввиду, что многие наименования нововведений стандарта не имеют очевидных аналогов в русском языке. И весьма маловероятно, что некто в одиночку сможет граммотно их подобрать. Над переводом должны трудится профессиональные лингвисты и программисты, а не непонятно кто. Только никто этим заниматься не будет - кому стандарт интересен, то его и в оргинале без проблем прочтет.
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
18.07.2010, 14:29     Пара вопросов по С++ #25
CyBOSSeR, так я то же самое и имел в виду. Нация – это народ, который имеет приверженную к нему национальную элиту (властную, научную, религиозную и художническую), которая смыслом своего существования считает обслуживание своей нации в сфере своей компетенции и продвижение национального проекта во всех аспектах.
Как только такая элита у нас появится, мы и станем нацией. А пока эти функции у нас выполняют энтузиасты-одиночки. Мне кажется, за это их стоит только благодарить.
По первому впечатлению стандарт там переводит человек довольно компетентный, так что пока не стоит падать духом.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16827 / 5248 / 321
Регистрация: 30.03.2009
Сообщений: 14,132
Записей в блоге: 26
18.07.2010, 14:55     Пара вопросов по С++ #26
Mr.X, те, кто из русских хорошо знают английский, утверждают, что Шекспира имеет смысл читать только в оригинале, перевод полной картины не доносит. Аналогично Пушкина надо читать только в оригинале. В каждом языке есть куча особенностей, которые нормально на другой язык не переводятся. Английский язык в силу своих лингвистических особенностей, судя по всему, лучше подходит для технических описаний, особенно когда надо придумывать новые термины. А размышления про нации, элиты и прочие высокие материи - это не более чем демагогия
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
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
8272 / 3491 / 142
Регистрация: 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++ Пара вопросов о рандомайзере и RadioButton
Пара глупых вопросов C++
C++ Пара вопросов по C++ 11

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

Или воспользуйтесь поиском по форуму:
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     Пара вопросов по С++
Ответ Создать тему
Опции темы

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