Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Чтобы не дописывать в каждую профильную тему создал эту тему -- незаурядные вопросы на которые не так просто найти ответ. 1. Что такое root namespace -- это самый базовый неймспейс? 2. Если есть клас (обьект) с полями int x; int y -- какие их адреса, если буквально -- адрес поля х больше/меньше/равен адресу поля у? 3. Если перефразировать полиморфизм-- то это способ использовать тот же самой метод для разных задач (типов), или такое обозначение (насколько помню с памяти) ближе к оверлодингу? 4. Вирт. деструктор это деструктор что касается базоваго класа ? 5. Может ли шаблонный клас наследовать параметр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 14:38 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
2. Класс та же структура, а в структурах данные хранятся в том порядке в котором объявлены. Т.е. адрес x меньше. Но есть нюансы с конкретными значениями адресов. По остальному не подскажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 14:49 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
1. Что такое root namespace -- это самый базовый неймспейс? Ну, ::, глобальный неймспейс или то же, что полное отсутствие неймспейса. 2. Если есть клас (обьект) с полями int x; int y -- какие их адреса, если буквально -- адрес поля х больше/меньше/равен адресу поля у? Адреса членов класса неопределены. Может быть любое сочетание, x < y или y<x В POD-структурах -- в порядке обявления в классе. Но если честно я не знаю, как там строго по стандарту. 3. Если перефразировать полиморфизм-- то это способ использовать тот же самой метод для разных задач (типов), или такое обозначение (насколько помню с памяти) ближе к оверлодингу? Перегрузка -- один из видов полиморфизма. Вообще, полиморфизм -- очень сложная штука, и её лучше вообще не пытаться как-то определить. В С++ под полиморфизмом чаще всего понимают тупо возможность написать виртуальную фукнцию в иерархии классов и потом вызывать её -- а она будет работать по-разному. 4. Вирт. деструктор это деструктор что касается базоваго класа ? Что значит, касается ? Виртуальный деструктор --- это деструктор, объявленный виртуальным, и всё. 5. Может ли шаблонный клас наследовать параметр? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2015, 15:54 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
MasterZiv, 1. Касательно неймспейса у меня был пример с двумя или тремя неймспейсами один из которых был вложен -- и на этом примере как то было сложно определяит вид иерархии. 2. В предыдущем посте написано что адрес поля (обьявленого раньше) х меньше y, а вы пишите что это неопределено. Как тогда вообше расматривать обьект -- вот есть указатель на обьект --адрес начала этого обьекта--а какая его структура -- как он распледелен в памяти--последовательно--вобще какой его размер, наверное зависит от полей и функции? 4. Кажется что виртуальный денструктор может быть только применим к базовому класу--вот и варианты ответа были что это конструктор лиш базового класа, или деструктор с обозначением виртуал--но если он работает лиш с базовими класами--но например определение вирт. деструктора производного класа приведет к ошибке? 5. Касательно шаблонных класов -- то имелось введу возможно ли наследовать собственный параметр -- если вы пишите что "Да" -- то где это прямо обозначено-- или какие есть ограничение на наследование в шаблонных класах ибо вопрос явно этого касается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2015, 14:10 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stut 2. В предыдущем посте написано что адрес поля (обьявленого раньше) х меньше y, а вы пишите что это неопределено. Как тогда вообше расматривать обьект -- вот есть указатель на обьект --адрес начала этого обьекта--а какая его структура -- как он распледелен в памяти--последовательно--вобще какой его размер, наверное зависит от полей и функции? Ну, зависят... Я не очень понимаю, зачем вообще такое может понадобиться -- понимать, какой подъобъект раньше в памяти, какой позже. Нужен адрес мембера -- взял его адрес, и используешь. Нужен другого -- взял и его адрес. А иметь доступ к мемберам как к массиву -- это надо POS struct делать, и его union-ом мапить на массив. stut 4. Кажется, что виртуальный денструктор может быть только применим к базовому класу--вот и варианты ответа были что это конструктор лишь базового класа, или деструктор с обозначением виртуал--но если он работает лиш с базовими класами--но например определение вирт. деструктора производного класа приведет к ошибке? Не приведёт к ошибке. Но если в иерархии объявлен виртуальный деструктор (у предка), то он будет виртуальным у всех потомков, без разницы, объявлен он virtual в потомке или нет. stut5. Касательно шаблонных класов -- то имелось введу возможно ли наследовать собственный параметр -- если вы пишите что "Да" -- то где это прямо обозначено-- или какие есть ограничение на наследование в шаблонных класах ибо вопрос явно этого касается? Где явно обозначено что ? Что можно наследовать от класса-параметра шаблона? Может быть, и нигде. А где написано, что если вокруг воздух, то ты им можешь дышать ? Вроде тоже нигде, но все, блин, дышат... На параметры шаблонов вообще мало ограничений накладывается, с ними можно делать всё, что хочешь. Почти всё. Короче, на наследование в шаблонных класах ограничений нет, лишь бы в итоге инстанциированное могло работать в С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 11:21 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
ребят, может не по теме, подскажите хорошую лит-ру, доступную в наших книжных. для чайников, так сказать. в универе изучала плюсы, но хочу наверстать забытое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 02:32 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Хорошая тема - составить подборку литературы и добавить ее в FAQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:04 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Irmaroв универе изучала плюсы, но хочу наверстать забытое. 0) создавай для нового вопроса новый топик. 1) вопрос уже неоднократно обсуждался, поищи. 3) Про доступность в наших книжных не скажу. Не отслеживаю. Для чайников -- скажу. Надо читать литературу НЕ для чайников, потому что читать плохую литературу бесмысленно -- зря потратишь время. Из литературы по С++ я рекомендую всегда книгу Дейтел + Дейтел, чем позже издание -- тем лучше (их было штук 5). В озоне есть, значит, должна быть доступна (там чёрная, у них все обложки разные :-) ). "Язык программирования C++. Лекции и упражнения" Стивен Прата -- я уверен, что тоже хорошая книга, но сам её не читал ещё (или уже). Есть ещё учебник Павловской, я её тоже не читал, но она хорошая -- Павловская, не книжка. Я у неё учился. :-) Достоинства этой книги -- что это ВУЗ-овский учебник, малый объём, и меньше цена. Но, наверное, покрытие материала там поменьше. Но Дейтелы тоже ВУЗ-овский учебник, только не российский. Авторы -- отец и сын, отец -- практикующий профессор в университете, а сын -- практикующий программист. Вместе получилась хорошая комманда для книги. Но Дейтелы также (думаю) не охватывают весь язык, особенно последний стандарт. Последний стандарт неплохо освящён в книге Параллельное программирование на С++ в действии. Практика разработки многопоточных программ Энтони Уильямс (если я не перепутал книгу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:07 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
maytonХорошая тема - составить подборку литературы и добавить ее в FAQ. Ну да, давно пора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:08 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Вы правы что адреса полей класов или обьектов можно лиш на практике. Но думаю это где то и в литературе написано -- не "вытянут" же он из пальца. Может как раз адреса полей в структур и класов разняться. Но в этом контексте у меня появился вопрос один из главных для меня в ООП--в чом суть юниона, как это возможно и почему его компоненты ссылаются на одно место памяти. Кстати как раз бы прямо касается предыдущего вопроса. Кроме того определение юниона можно трактовать двояко: или все его поля и функции (хотя последнее прерогатива класа) ссылаются на один адрес что невозможно ибо поля могут иметь разные типы и соответственно ячейки маняти, о функциях молчу ибо их адресации не знаю точно ведь там есть тело фунции а не только тип ретурна, я уже не говорю как вообще клас маркируется в этой ленте ячеек. Если все юнионы ссылаются на одно место значит это как статический клас. И вообще ссылатся на одно место памяти это какой то абсурд? Кроме того если два обьекта ссылаются на один и тот же обьект то при использование лиш одного деструктора, а потом второго это приведет к утечке памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 19:43 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
И еще вопрос: char c="\xBC" -- это отрицательное шестнадцятиричное число как расшифровывается? Что там слеш значит? И вообще не понятно как там в отрицательных бинарных числах -- там ведь есть лишний бит на минус и не всегда возможно отличить ту же запись которая может означать и минусовое и положительное число. Касательно книг то книга дейтела очень обьемная но для меня который основную литературу уже прошел и имеет лиш базисную практику по плюсам там ничего нового не нашел (после шилда и других-- вот липман со своими основами надо немало вчитыватся). Там очень детально как раз для пионера програмирование написано и все обьясняется. Кстати кто то рекомендовал дейтела и для явы -- но там примеры все на свинге или awt не знаю подойдет ли это для изучение уже явы -- хотя может это издание такое графическое. Не мало встречал и книгу александреску -- вот интересно что то нового можно почерпнуть там после 3ех вышеупомянутых авторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 20:05 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stut, все просто. union просто экономит память при граммотном использовании. Например у тебя один объект для передачи и приема. При передаче используется свойство SendBytes (сколько байт передано) при приеме LoadBytes (сколько байт принято). Объект может или передавать или принимать, т.е. в конкретном экземпляре используется или SendBytes или LoadBytes, но никогда одновременно и то и другое. А теперь добавим что объектов миллион. Понял зачем нужен union? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 20:08 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stut, Но в этом контексте у меня появился вопрос один из главных для меня в ООП--в чом суть юниона, как это возможно и почему его компоненты ссылаются на одно место памяти. а union никаким образом к ООП не относится. даже можно сказать, что в ООП он противопоказан. суть же простая, ты интерпретируешь по-разному один и тот же блок памяти по определенному адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 20:58 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Вот о юнионах надо прочитать: А здесь простой пример -- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. w: 0x22ff38; h: 0x22ff3c; d: 1 -- очень логично -- что поля размещены последовательно -- и разница адресов между ними 4. Но в програме даже после приведение к челому почему то 1 -- но почему эта разница не 4, а 1 -- то есть размер одной ячейки типа инт? И если мы уже заговорили о юнионах, адресах обьектов -- как тогда и где сохраняются ключевые слова типа private, вообще как записывается обьект в память. Вот адрес функции не было возможно получить: Код: plaintext 1. ISO C++ forbids taking the address of a bound member function to form a pointer to member function -- такая редкосная ошибка, без примеров в нете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 22:29 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
maytonХорошая тема - составить подборку литературы и добавить ее в FAQ. поддерживаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 03:03 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stutВот о юнионах надо прочитать: А здесь простой пример -- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. w: 0x22ff38; h: 0x22ff3c; d: 1 -- очень логично -- что поля размещены последовательно -- и разница адресов между ними 4. Но в програме даже после приведение к челому почему то 1 -- но почему эта разница не 4, а 1 -- то есть размер одной ячейки типа инт? И если мы уже заговорили о юнионах, адресах обьектов -- как тогда и где сохраняются ключевые слова типа private, вообще как записывается обьект в память. Вот адрес функции не было возможно получить: Код: plaintext 1. ISO C++ forbids taking the address of a bound member function to form a pointer to member function -- такая редкосная ошибка, без примеров в нете 1. Метку public в классе Rectangle можно/(на мой взгляд лучше) не ставить. BS так не делает, и в другом коде(др. программистов) не встречал(понятно по каким причинам не ставят) 2. Название функции инициализации неудачное, лучше init (см BS). 3. Метки доступа, типа private не сохраняются нигде(память под них не выделяется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 03:09 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stutно почему эта разница не 4, а 1 -- то есть размер одной ячейки типа инт? Потому что int* указатель на тип int, т.е. Код: plaintext 1. 2. 3. 4. Поизучай указатели. stutкак тогда и где сохраняются ключевые слова типа private, вообще как записывается обьект в память. Никак и нигде не сохраняется. private надо компилятору только на момент компиляции, чтобы при наличии в коде обращений извне выдать ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 07:02 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Метку public в классе Rectangle можно/(на мой взгляд лучше) не ставить. BS так не делает, и в другом коде(др. программистов) не встречал(понятно по каким причинам не ставят) Можно не ставить, в структурах public по умолчанию https://msdn.microsoft.com/ru-ru/library/4a1hcx0y.aspx ...in structs the default accessibility is public, whereas in classes the default is private. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 07:07 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
авторно почему эта разница не 4, а 1 -- то есть размер одной ячейки типа инт? Где такое написано ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:46 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
SashaMercuryГде такое написано ? Что тут неправильного? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:49 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Я может быть не до конца понял контекст, но мне показалось, что stut говорит о том, что размер памяти необходимый для того чтобы хранить переменную типа int обычно равен 1 байту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:53 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
1. Дело в том что сперва я создал такой самый клас, потом изменил одно слово class на struct -- результат аналогичен. Я сделал поле публичным потому что ошибка компилятора при приватном -- потому получить адрес не мог. 2. Размер инта кажется именно 4 байта -- то есть 1 инт = 4 байта. В любом случае ведь при отнимание отного и вотрого адреса разница должна быть 4, а не 1. 3. Приват не указывается -- ну значит это где то в компиляторе сохраняется на момент обработки кода. Вот как адрес функции получить интересно ибо вываливает ошибку. 4. Еще такой вопрос -- вот есть простая с++ програмка: int y=4; void main () { int y=y; return 0; } что то вроде того -- вопрос какое значение на выходе из метода мейн будет имень переменная y -- глобальная или локальная точно не помню. Я когда поставил после (или перед) return 0 -- cout<<y; -- после компиляции и запуска получил пустоту -- не думаю что это значит, что y=0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 10:54 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
Потому что int* указатель на тип int -- я про указатели не писал. Я непосредственно отнимал числа -- в дпном случае -- 12-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:01 |
|
||
|
Несколько вопросов по с++
|
|||
|---|---|---|---|
|
#18+
stutПотому что int* указатель на тип int -- я про указатели не писал. Я непосредственно отнимал числа -- в дпном случае -- 12-8это ты так думаешь, а компилятор думает по другому. Он то указатели вычитал :)) Код: plaintext 1. так попробуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=43&tid=2018821]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
39ms |
get forum data: |
2ms |
get page messages: |
111ms |
get tp. blocked users: |
1ms |
| others: | 266ms |
| total: | 492ms |

| 0 / 0 |
