84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
1 | |
Теория по С++23.06.2013, 23:01. Показов 5756. Ответов 20
Метки нет (Все метки)
Помогите ответить на вопросы, очень нужно к экзамену.
На что-то ответила, но не знаю правильно ли( 1. Что находится в списке инициализации конструктора композитного класса, подобъекты которого инициализируют конструкторы без аргументов? 2. В каких случаях необходимо применять список инициализации компонентов класса? 3. Когда в конструкторе композитного класса не указывается список инициализации подобъектов? 4. Когда вызываются деструкторы подобъектов композитного класса? Сначала деструктор подобъекта, затем базовый деструктор. 5. В каком порядке вызываются конструкторы подобъектов композитного класса? Сначала конструктор базового класса, затем конструктор подобъекта. 6. Какой формат имеет обращение к полю X подобъекта Y композитного объекта Z в его компонентом методе и из внешней функции? 7. Какие отношения реализует композиция и наследование? Композиция – принадлежит Наследование – является 8. В композитном классе Z есть 2 подобъекта класса Y, каждый из которых должен инициализироваться необязательно одинаковым значением целочисленного параметра. Какой формат должно иметь определение конструктора композитного класса Z? Y (int x, int y) : Z(x, y) {} 9. В композитном классе Z есть 2 подобъекта класса Y, каждый из которых должен инициализироваться одинаковым значением целочисленного параметра X. Какой формат должно иметь определение конструктора композитного класса Z? 10. В композитном классе Z есть подобъекты классов X и Y, конструкторы которых имеют, соответственно. Целочисленный (i) и символьный (с) аргументы. Какой формат должно иметь определение конструктора композитного класса Z? 11. Класс Z имеет 2 константные целочисленные компоненты X и Y. Какой формат должна иметь дефиниция конструктора класса Z с 2-мя формальными параметрами _X и _Y для инициализации полей X и Y? 12. Какой формат должно иметь обращение к полю X подобъекта Y композитного объекта Z в его компонентном методе и из внешней функции? 13. Какой класс считается контейнерным (композитным)? это универсальные шаблонные классы, предназначенные для хранения элементов заданного типа в смежных областях памяти 14. Какая последовательность вызова конструкторов в композитных (контейнерных) классах? Сначала базового класса, потом производного 15. В каком порядке вызываются деструкторы в композитных (контейнерных) классах? Сначала производного, потом базового класса. 16. В композитном классе House имеются 2 подобъекта класса Room, который в свою очередь является композитным классом, содержащим 2 подобъекта класса Furniture. Нужно определить порядок инициализации подобъектов перечисленных классов. 1) инициализация в классе House 2) инициализация в классе Room 3) инициализация в классе Furniture 17. Кто имеет доступ к приватным компонентам приватного подобъекта композитного (контейнерного) класса? 18. Кто имеет доступ к публичным компонентам публичного подобъекта композитного (контейнерного) класса? 19. Кто имеет доступ к приватным компонентам публичного подобъекта композитного (контейнерного) класса? 20. Кто имеет доступ к публичным компонентам приватного подобъекта композитного (контейнерного) класса? 21. Каким образом в композитном классе специфицируется обращение к конструкторам подобъектов? 22. Каким образом в композитном классе должны передаваться аргументы конструкторам подобъектов?
0
|
23.06.2013, 23:01 | |
Ответы с готовыми решениями:
20
Теория принятия решений Теория игр теория Теория C#!!! Теория |
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
24.06.2013, 00:45 | 2 |
1. Инициализация полей этого класса, конструкторы без аргументов можно явно не писать
2. Когда поля-объекты не имеют конструкторов по умолчанию, если в классе есть константы и ссылки 3. Когда нужно вызвать их конструкторы по умолчанию 4. Сначала деструктор самого класса, потом деструкторы подобъектов в порядке, обратном вызову его конструкторов 5. В порядке их объявления в классе (независимо от того, в каком порядке они в списке инициализации) 6. Из класса объекта Z - Y.X Из внешней функции - Z.Y.X 7. Верно 8. Z(int y1, int y2):Yobj1(y1),Yobj2(y2) 9. Z(int y1):Yobj1(y1),Yobj2(y1) 10. Z(int i1, int i2, char c1, char c2):Xobj(i1,c1),Yobj(i2,c2) 11. Z(int _X, int _Y):X(_X),Y(_Y) 12. см. 6? 13. Верно 14. Сначала конструктор элементов, потом конструктор класса 15. Сначала деструктор класса, потом деструкторы элементов 16. Сначала Furniture, потом Room, потом House 17. Методы и друзья класса подобъекта, которые, к тому же, являются друзьями композитного класса и методы и друзья композитного класса, которые, к тому же, являются друзьями класса подобъекта 18. Все 19. Методы и друзья класса подобъекта 20. Методы и друзья композитного класса 21. Явным образом в списке инициализации 22. Через явный вызов конструкторов подобъектов в списке инициализации
1
|
84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
24.06.2013, 11:34 [ТС] | 3 |
Спасибо огромное))
0
|
84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
24.06.2013, 21:20 [ТС] | 4 |
А не могли бы помочь с этими вопросами?
по механизму наследования 1. В каком порядке вызываются конструкторы базового и производного классов при создании объекта производного класса? 2. В каком порядке вызываются деструкторы базового и производного классов при уничтожении объекта производного класса? 3. С какой целью в общедоступных базовых классах при категории наследования public вводятся защищенные ( protected ) компоненты? 4. Какие права доступа к компонентам базового класса устанавливаются по умолчанию в производном классе при категории наследования private ? 5. Какие права доступа к компонентам базового класса устанавливаются по умолчанию в производном классе при категории наследования public ? 6. Что происходит, если при определении конструктора производного класса не указан вызов конструктора базового класса? 7. В каком случае при определении конструктора производного класса можно явно не указывать вызов конструктора базового класса? 8. В каком варианте допустима взаимная подстановка между объектами базового и производного классов? 9. В каком варианте допустима взаимная подстановка между указателями на объекты базового и производного классов? 10. Почему вместо объектов производного класса нельзя подставлять объекты базового класса? 11. Что никогда не наследуется из базового класса? 12. Когда конструктор производного класса может быть пустым? 13. Пусть 1 компонентный метод базового класса перегружен в производном классе, а объект производного класса адресуется через указатель на базовый класс. Какой метод может быть вызван по этому адресу: базовый или перегруженный? 14. Как осуществляется преобразование указателя объекта производного класса в указатель объекта базового класса? 15. Как можно преобразовать указатель объекта базового класса в указатель объекта производного класса? 16. Когда есть доступ к приватным данным базового класса в методах производного класса? 17. Какой доступ имеют методы производного класса к публичным компонентам базового класса при категории наследования private? 18. Как получить избирательный доступ в производном классе к публичным компонентам базового класса при категории наследования private? 19. Какая категория наследования устанавливается по умолчанию в декларации производного класса и структуры? 20. Кому доступны защищенные компоненты базового класса?
0
|
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
24.06.2013, 22:09 | 5 |
1. Сначала базового, потом производного
2. Сначала производного, потом базового 3. Чтобы они были доступны для производных классов, но не были доступны извне 4. public и protected становятся private, private скрываются 5. private скрываются, остальное - без изменений 6. Вызывается конструктор по умолчанию (если есть) 7. Если у базового класса есть конструктор по умолчанию 8. Объекту базового класса можно присвоить объект производного класса (при этом часть производного класса теряется) 9. Указателю баз. класса может быть присвоен указатель производного класса. Возможно и наоборот, если класс полиморфный и идет проверка с помощью reinterpret_cast 10. Потому что может идти обращение к полям производного класса, которых нет в базовом 11. Конструкторы и деструкторы 12. Когда у базовых классов есть конструкторы по умолчанию 13. Базовый, если метод виртуальный - то производный 14. В смысле как? Неявно, что ли? 15. С помощью идентификации типа времени выполнения (RTTI), используя reinterpret_cast 16. Если производный класс или его метод являются другом базового класса 17. private 18. Включить их директивой using в производном классе 19. Класса - private, структуры - public 20. Базовому классу, его друзьям, производным классам и их друзьям (если, конечно, доступ к базовым классам не нарушится)
1
|
84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
24.06.2013, 22:34 [ТС] | 6 |
Спасибо огромное)))
0
|
25.06.2013, 13:21 | 7 |
11. оператор = тоже не наследуется, т.к. его действия сходны с конструированием.
Добавлено через 2 минуты 14. производный "урезается" до базового. Добавлено через 1 минуту Вообще, вопросы странные какие-то. Вот что это, например:
2
|
84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
25.06.2013, 13:32 [ТС] | 8 |
Такие вопросы в универе дают(
Добавлено через 4 минуты Если не трудно, посмотрите еще такие вопросы, ответы были, но преподаватель сказал что не правильно отвечали( 1. Какие оператор-функции по умолчанию включаются в спецификацию класса, если они явно не определены? 2. Какой тип аргумента и кода возврата должен иметь оператор присваивания, создаваемый по умолчанию? 3. Сколько аргументов должна иметь компонентная оператор-функция, перегружающая унарную операцию? 4. Сколько аргументов должна иметь компонентная оператор-функция, перегружающая бинарную операцию? 5. Сколько аргументов должна иметь дружественная оператор-функция, перегружающая унарную операцию? 6. Какие операторы языка С не могут быть перегружены в классах объектов С++? 7. Как интерпретируется последовательность присваиваний: w = x = y = z; 8. Какие операции языка С++ не могут быть перегружены в классах объектов? 9. Что является аргументом return в коде оператора присваивания? 10. Сколько аргументов должна иметь дружественная оператор-функция, перегружающая бинарную операцию? 11. Каким образом можно запретить присваивание объектов класса во внешних функциях? 12. Можно ли перегрузить операцию ** для возведения в степень объектов класса? 13. Возможна ли перегрузка операций для данных стандартных типов? 14. В каких случаях нельзя реализовать перегрузку операций и перегрузку оператора в форме компонентной функции класса? 15. Зачем нужны дружественные функции? 16. В каком случае неизбежно использование оператора преобразования типов? 17. Возможно ли реализовать внешнюю оператор-функцию для перегрузки бинарной операции, которой передаются два указателя на объекты класса? 18. Какие аргументы и код возврата имеет оператор преобразования типа? 19. Что обеспечивает правую ассоциативность оператора присваивания? Записать в функциональной форме присваивание w = x = y = z; где w, x, y, z являются объектами одного класса.
0
|
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
25.06.2013, 16:44 | 9 |
1. =, &
2. Аргумент - константная ссылка, возврат - ссылка на объект, который слева от = 3. 0 4. 1 5. 1 6. точка? 7. w.operator=(x.operator=(y.operator=(z))) 8. .,.*,::,::*,new,new[],delete,delete[] 9. *this 10. 2 11. Сделать уровень доступа operator= protected или private 12. Нет 13. Нет 14. В случаях, когда нужно, чтобы в бинарной операции слева стоял объект другого класса, а справа объект этого класса, и другой класс изменять нельзя 15. Чтобы перегружать бинарные операции в случаях, названных в п.14 16. Когда нужно преобразовать во встроенный тип 17. Нет 18. Аргументов нет, возврат - того же типа, что и тип, указанный в перегруженном операторе 19. Можно делать удобные конструкции, подобные той, что была в п.7
2
|
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
|
25.06.2013, 18:05 | 10 |
по первому списку
7. Композиция это не просто принадлежит, это когда одно не существует без другого. Типа как кнопки не существует без окна. Это частный случай агрегации. тут говорится, что правильнее использовать слово "содержит", а не "принадлежит"
1
|
84 / 4 / 0
Регистрация: 01.02.2012
Сообщений: 93
|
|
25.06.2013, 21:21 [ТС] | 11 |
Спасибо огромное, очень выручили)
0
|
25.06.2013, 21:45 | 12 |
Ссылка тоже? По-моему только =.
new/delete вполне могут быть. Тут наверно имеются в виду еще и френды: <<, >>, префиксная запятая. В общем, наверно, для доступа к скрытым полям и методам класса. Он один? Вот здесь хотелось бы почитать об этом. Т.е. когда нужно, например, преобразовать тип класса A в int? А какой из операторов? static_cast который? Или пользовательский? А как же преобразование с помощью конструктора?
0
|
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
25.06.2013, 21:59 | 13 |
BumerangSP,
1
|
25.06.2013, 22:13 | 14 |
& - признак ссылки. А адрес - это оператор-функция? Что-то видимо не так мной понято. Как я понял вопрос из области: "что может быть сгенерировано компилятором для класса?" Так вот один из четырех - оператор =
Но ведь могут Причем с любым количеством аргументов. Да и деструктор явно вызывается специально только из-за особенно перегруженного new. Пример можно?
0
|
Неэпический
|
|
25.06.2013, 22:20 | 15 |
1
|
BumerangSP
|
25.06.2013, 22:32
#16
|
Не по теме: @Croessmah, ну, в обсчем-то так.
0
|
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
25.06.2013, 22:34 | 17 |
Так ссылку и нельзя перегружать, да она и вообще вроде как оператором не является
Ну это да, но new и operator new - совершенно разные вещи. У new стандартное поведение, а он уже вызывает operator new для класса (или глобальный, если нет для класса), а потом конструктор, при условии, что operator new возвратил не ноль
0
|
25.06.2013, 22:53 | 18 |
@ViktorKozlov, а вопрос-то изначально был "какие-оператор функции...")
Т.е. сначала вызывается какой-то new, который затем смотрит, какую версию (глобальную, либо для класса) вызвать? Ссылку на прочтение можно? Как по мне, так если в классе есть перегрузка, то она вызывается вместо глобального new, без каких-либо телодвижений. Конечно, можно просто перегрузить и глобальный new. Кстати, от сути отдаляемся, вопрос был: "Какие операции языка С++ не могут быть перегружены в классах объектов?" Что есть перегрузка? Одинаковые имена - разное количество аргументов с типами и возвращаемые значения. По сути, перегрузку new ведь можно отнести к этому определению?
0
|
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
|
|
25.06.2013, 23:14 | 19 |
Так операция взятия адреса & как раз и является унарной оператор-функцией
Да, operator new - это статическая функция (без разницы, писать static перед ней или нет), и если определена в классе, для которого вызывается, то вызывается версия класса, в противном случае - глобальная Подробно про это написано в книге "Скотт Мейерс - Наиболее эффективное использование C++", глава 8 Еще много написано в книге С. Липпмана "Язык программирования C++", 4 издание, глава 18.1
0
|
25.06.2013, 23:28 | 20 |
По первому вопросу видимо неразбериха с терминологией .
По поводу new имеется в виду new-выражение? Тогда ясно, о чем Вы. Но, думаю, все же можно по вопросу ответить, что new/delete туда входят имхо.
0
|
25.06.2013, 23:28 | |
25.06.2013, 23:28 | |
Помогаю со студенческими работами здесь
20
Теория по КТ теория Теория по ДМ Теория по 1С Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |