|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|||||||||||||||||||||||||||||||||||||||||
Накопились вопросы по разным темам.01.09.2011, 20:38. Показов 2397. Ответов 21
Метки нет (Все метки)
1) операция :: - это операция разрешения области действия или области видимости?
2) Чем отличается структура от класса? У структуры и у класса есть данные и функции. Да, у классов есть наследование, полиморфизм, инкапсуляция и т.д и т.п.. Это все? Судя по моим малым знаниям, мне кажется, что структуру всегда можно заменить классом. Что такого есть в структуре, что нет у класса? 3) В объекте класса( в представителе класса ) есть указатель this, указывающий на этот объект. Методы класса получают неявно этот указатель. Допустим есть метод:
4)Указатель this находится в объекте, тогда допустим есть класс
Я знаю три способа: - using namespace std; // самый простой - using std::cout; using std::cin; - непосредственно писать во всем коде перед cout и cin std::, т.е. std::cin >> a; std::cout << a; Какой из способов лучше? 6)Инкапсуляция - это всего лишь скрытие реализации класса от клиентов, т.е. программистов, использующих этот класс? Скрытие реализации для того, что бы код клиентов не зависил от реализации, т.е. они должны знать только интерфейс класса(какие есть методы и что они делают)? 7) Функции в классах называют методами или по другому члены-функции. Я читаю Дейтелов "Как программировать на С++". В книгу везде пишут элемент данные и элементы функции, вместо членов класса и методов(членов функций). Может это корявый перевод на русский? Просто такие термины я вижу только в этой книге. PS Что еще вспомню, допишу.
0
|
|||||||||||||||||||||||||||||||||||||||||
| 01.09.2011, 20:38 | |
|
Ответы с готовыми решениями:
21
Вопросы накопились Вопросы накопились Тест,примеры по разным темам |
|
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
|
|||||||
| 01.09.2011, 20:53 | |||||||
1
|
|||||||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 01.09.2011, 20:55 [ТС] | ||
|
Все равно не понимаю почему в языке С++ существуют и структуры и классы. Тем более, если оказывается, что и у структур есть наследование, полиморфизм и т.д. и т.п.
Вот еще вопрос: В книге Дейтейлов "Как программировать на С++" в классе сперва пишут public, потом protected, потом private. А вот на этом форуме наоборот. Как правильно то?
0
|
||
|
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
|
||
| 01.09.2011, 21:00 | ||
|
А вот дальнейший выбор зависит от размера программы. Для большой программы лучше использовать второй, а для маленькой третий
1
|
||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 01.09.2011, 21:04 [ТС] | ||
|
0
|
||
|
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
|
||||
| 01.09.2011, 21:13 | ||||
|
Добавлено через 4 минуты Добавлено через 2 минуты
1
|
||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|||||||
| 01.09.2011, 21:13 | |||||||
|
Объект класса тоже можно явно инициализировать - как и для структур:
1
|
|||||||
|
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
|
|
| 01.09.2011, 21:17 | |
|
1
|
|
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 01.09.2011, 21:19 [ТС] | ||
|
А какой смысл тогда было делать Страуструпу классы, если можно было всего лишь одной свойство в структурах изменить и было бы как классы?
0
|
||
|
Заблокирован
|
||
| 01.09.2011, 21:32 | ||
|
Что бы подчеркнуть, что класс - это именно класс. Идеологически, структуры и классы существуют для разных целей. Структура - просто объединение данных, для более удобного хранения. Как правило, содержит только POD-объекты, и не содержит методов. Полностью открытая. Класс служит для разделения зон ответственности по коду. И идеологически является модулем - инвариантной целостной логической единицей, с данными, и методами для обработки этих данных. Имхо.
1
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||||||||||||||
| 01.09.2011, 21:56 | ||||||||||||||||||
|
Поскольку ответы тут разрозненные, попробую собрать всё воедино. Собирать буду не в буквальном смысле, отвечать буду сам, поэтому если повторюсь, извините)) Начинаем.
Против второго способа в принципе ничего не имею, но и он может оказаться источником ошибок, когда используются несколько библиотек, и хотя бы в двух из них есть классы с одинаковыми именами. Если в одном заголовочном файле мы отменим пространство имён объекта из одной либы, а в другом файле - из другой, и подключим оба заголовка к одному модулю - код не скомпилируется. Лично я всегда использую третий способ, каким бы обширным не был проект. Member с английского можно перевести и как "член", и как "элемент", и ещё много как. Поэтому это не корявый перевод, а скорее просто ещё не до конца сформировавшаяся терминология в русском языке. Вот так))
1
|
||||||||||||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||||||||||||||||||||||
| 01.09.2011, 23:17 | |||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
это возможно, только если они являются POD-классом (объединение всегда POD), т.е. простым классом (объединением). На самом деле различия между классом и простым классом гораздо существеннее, чем между классом и структурой (которых всего два). Простой класс – это аналог записи в других языках, а класс – это класс для ООП. Грубо, простой класс – это аналог сишной структуры, хотя ему разрешается иметь функции-члены и кое-что еще. По стандарту простой класс не может обладать: • определенными пользователем конструктором, деструктором и оператором копирующего присваивания; • виртуальными функциями; • базовыми классами; • закрытыми и защищенными нестатическими членами; • нестатическими членами данных, являющимися ссылками. Помимо этого, все нестатические члены данных должны относиться к POD-типам – фундаментальным типам, типам-перечислениям, POD-классам и объединениям, указателям на POD-типы и массивам из POD-элементов. В отличие от структур языка C, POD-класс может иметь: • статические члены данных; • невиртуальные функции-члены; • вложенные типы. Простые классы ведут себя как сишные данные, т.е. их можно инициализировать инициализаторами в фигурных скобках, а если они объявлены глобально или в пространстве имен без инициализации, то все их члены-данные инициализируются нулевыми значениями. Для классов С++ в этом случае вызываются конструкторы по умолчанию.
5
|
|||||||||||||||||||||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 02.09.2011, 08:21 | |
|
Mr.X, спасибо за уточнения. Но новичку пока такие дебри - плохо понятны...
0
|
|
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
||
| 02.09.2011, 10:28 | ||
|
1
|
||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 02.09.2011, 19:02 [ТС] | |
|
Еще вопрос:
Модификатор const у методов означает, что нельзя модифицировать только данные класса? Или вообще никакие данные нельзя модифицировать?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 02.09.2011, 19:26 | |
|
Chelioss, нет, только данные класса.
1
|
|
|
Заблокирован
|
|
| 02.09.2011, 19:38 | |
|
1
|
|
|
13 / 13 / 2
Регистрация: 11.02.2011
Сообщений: 55
|
||||||
| 02.09.2011, 19:49 | ||||||
|
Если голова способна принять еще информации, обрати внимание на следующие:
1
|
||||||
|
Заблокирован
|
||||
| 02.09.2011, 20:42 | ||||
|
Как известно, объектно-ориентированное программирование строится на принципе закрытости реализации. Поэтому по умолчанию у классов их члены имеют спецификатор доступа private. У структур такого нет, так как не забывайте, что нужно обеспечить совместимость с языком С, откуда в С++ пришли структуры. То есть имеет место некоторый дуализм, связаггый с тем, что С++ строится на основе С. С++ должен поддерживать стандартные структуры языка С, а также наделять их новыми качествами. Классы на самом деле также физически реализованы в виде структур. Что касается спецификаторов доступа, то их можно размещать в любом порядке и в любом количестве. Единственное, чем руководствуются, это читабельностью кода. Добавлено через 3 минуты Добавлено через 3 минуты
1
|
||||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||
| 02.09.2011, 20:43 [ТС] | ||
|
В плане читабельности какой вариант лучше?
0
|
||
| 02.09.2011, 20:43 | |
|
Помогаю со студенческими работами здесь
20
Несколько программ по разным темам
Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились Информация по темам билетов Тесты по данным темам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|