Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Пара вопросов по C++ 11 - C++
1. чем отличаются std::forward_list и std::initializer_list? 2. не получается применять constexpr в msvs 2013 pro constexpr auto n = 0;...

пара вопросов по GUI - C++
1) итак, посмотрел Inter PRO одного банка. При наборе в IE адреса он каким-то образом переадресует запущенному Inter PRO, он в свою очередь...

Пара глупых вопросов - C++
Помогите please,please,please. Не могу понять в чем туплю, надо всего-то записать двумерный массив в файл ну и я пишу (Уже есть массив...

Пара вопросов по итераторам - C++
1. Почему в этом коде элементы удаляются через одного? for (std::vector &lt;int&gt;::iterator j = vector.begin(); j &lt; vector.end(); j++) ...

Пара вопросов по функторам stl - C++
Доброго времени суток! У меня возникло пара вопросов по функторам. Может кто чего подскажет? Вопрос 1. В нижеследующем коде в...

Пара вопросов о рандомайзере и RadioButton - C++
1) srand((unsigned)time(NULL)); int rand_ = rand()%10; rand_ будет равен от 0 до 9 включительно или от 0 до 10 включительно? ...

30
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.07.2010, 14:43 #16
Цитата Сообщение от Mr.X Посмотреть сообщение
Из своего опыта я вывел, что в программировании нет ничего вреднее, чем основываться на недоказанных предположениях.
Это верно, но в данном случае, у меня нет никаких сомнений в том, для чего нужен const_cast.
Вот нарыл фрагмент из С++98:
Цитата Сообщение от С++98
a function can change the values of its non-const parameters, but these changes cannot affect the values of the arguments except where a parameter is of a reference type (dcl.ref); if the reference is to a const-qualified type, const_cast is required to be used to cast away the constness in order to modify the argument's value. Where a parameter is of const reference type a temporary object is introduced if needed (dcl.type, lex.literal, lex.string, dcl.array, class.temporary). In addition, it is possible to modify the values of nonconstant objects through pointer parameters.
Цитата Сообщение от Mr.X Посмотреть сообщение
Надо будет распечатать стандарт и почитывать на ночь.
Думаю для начала это будет слишком сложное чтение.
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
17.07.2010, 15:02 #17
Цитата Сообщение от Mr.X Посмотреть сообщение
На каком-то сайте один товарищ несколько лет назад грозился перевести, но видимо что-то у него не сложилось
Если посмотреть на переводную техническую литературу, то зачастую многие вещи на русском языке попросту не понять, не видя оригинала. В случае стандарта это будет полный трындец.

Как-то мне довелось читать документацию от велосипедной цепи (процесс установки) на английском. Я не считаю себя большим специалистом в английском языке, но без поллитры и консилиума в три рыла это не переводилось. Лишь какое-то время спустя я узнал, что эта документация родилась после того, как голландцы перевели её с японского на английский.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
17.07.2010, 15:42 #18
Цитата Сообщение от Evg Посмотреть сообщение
Если посмотреть на переводную техническую литературу, то зачастую многие вещи на русском языке попросту не понять, не видя оригинала. В случае стандарта это будет полный трындец..
Ну, он собирался его как Библию издать: слева священный текст - справа перевод.
Библию перевели же, а она поспецифичнее будет.
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
17.07.2010, 18:19 #19
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, он собирался его как Библию издать: слева священный текст - справа перевод.
Ну разве что так... И много он там уже перевёл? Или кроме закидонов пальцами пока ничего нет?
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 00:18 #20
Цитата Сообщение от Evg Посмотреть сообщение
Ну разве что так... И много он там уже перевёл? Или кроме закидонов пальцами пока ничего нет?
http://zouev.blogspot.com/2010_01_01_archive.html
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
18.07.2010, 10:30 #21
А сам перевод где находится?
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 11:21 #22
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 12:37 #23
Цитата Сообщение от Evg Посмотреть сообщение
А сам перевод где находится?
Как я понял, он еще не опубликован, но и после публикации в том числе и электронные копии автор планирует сделать платными.

Добавлено через 25 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Mr.X, человек новый стандарт переводит? Интересно как у него это получится, я, например, не предаствляю как названия многих нововведений можно грамотно перевести на русский.
Извините за философское отступление, но мне кажется, что такое скептическое отношение к национальным языку и мышлению еще раз подтверждают мне мою мысль, что мы, русские, еще не являемся нацией. Самостоятельная и зрелая нация формулирует для себя понятия сама, и осмысливает все сама. Заимствования понятий и теорий у нее происходят путем переосмысления их национальной элитой в национальном культурном контексте. Евреи вон не поленились новый язык для себя выдумать (я имею в виду оживление мертвого языка для разговорных целей), а мы свой богатейший многотысячелетний язык, от которого по последним исследованиям произошли все индоевропейские, пытаемся заменить примитивной английской тарабарщиной.
Недавно по радио кто-то рассказывал, как ему лично говорил один из руководителей американской программистской фирмы: если проект срочный, то мы отдаем его американцам, если большой, то индийцам, а если его реализация кажется невозможной, то русским, и они всегда справляются.
Так что у нас есть все для того, чтобы стать нацией, кроме желания ею стать.
0
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.07.2010, 13:40 #24
Mr.X, я может не очень ясно выразился, но имел ввиду, что многие наименования нововведений стандарта не имеют очевидных аналогов в русском языке. И весьма маловероятно, что некто в одиночку сможет граммотно их подобрать. Над переводом должны трудится профессиональные лингвисты и программисты, а не непонятно кто. Только никто этим заниматься не будет - кому стандарт интересен, то его и в оргинале без проблем прочтет.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 14:29 #25
CyBOSSeR, так я то же самое и имел в виду. Нация – это народ, который имеет приверженную к нему национальную элиту (властную, научную, религиозную и художническую), которая смыслом своего существования считает обслуживание своей нации в сфере своей компетенции и продвижение национального проекта во всех аспектах.
Как только такая элита у нас появится, мы и станем нацией. А пока эти функции у нас выполняют энтузиасты-одиночки. Мне кажется, за это их стоит только благодарить.
По первому впечатлению стандарт там переводит человек довольно компетентный, так что пока не стоит падать духом.
0
Evg
Эксперт CАвтор FAQ
18258 / 6383 / 440
Регистрация: 30.03.2009
Сообщений: 17,665
Записей в блоге: 28
18.07.2010, 14:55 #26
Mr.X, те, кто из русских хорошо знают английский, утверждают, что Шекспира имеет смысл читать только в оригинале, перевод полной картины не доносит. Аналогично Пушкина надо читать только в оригинале. В каждом языке есть куча особенностей, которые нормально на другой язык не переводятся. Английский язык в силу своих лингвистических особенностей, судя по всему, лучше подходит для технических описаний, особенно когда надо придумывать новые термины. А размышления про нации, элиты и прочие высокие материи - это не более чем демагогия
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.07.2010, 18:11 #27
Цитата Сообщение от Evg Посмотреть сообщение
...не более чем демагогия
Где-то я читал такую рекомендацию: если у тебя в споре нет аргументов, то обвиняй оппонента в демагогии.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.07.2010, 18:13 #28
Mr.X, можешь в каждом вопросе по стандарту отвечать, что ждешь русского перевода, благо никогда не дождешься
0
Nameless One
19.07.2010, 12:35
  #29

Не по теме:

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

0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
19.07.2010, 13:44 #30
прекращаем оффтоп.

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

вставление строк и пара вопросов - C++
вычислить и вывести на экран в виде таблицы значение функции F на интервале от Xнач до Xконч с шагом Dx задана система: ...

Пара вопросов про массивы - C++
у меня есть пара вопросов,хотя один можно сказать относится к функциям..но тема у нас в курсе-массивы. Так вот: 1.void main() { const...

Конструкторы и деструкторы при наследовании. Пара вопросов - C++
1. Можно ли создавать виртуальный конструктор/деструктор и переопределять его без создания нового конструктора в производном классе? 2....

Пара вопросов о стиле - C++
1. Используете ли вы префиксы? 2. именуете_так или ВсёЖеТак? 3. Если создаёте функцию для получения части строки, как вы будете её...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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