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

Накопились вопросы по разным темам. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача переменных в поток http://www.cyberforum.ru/cpp-beginners/thread347278.html
Вот никак не могу разобраться, как передать переменную в функцию потока. Вот например есть код: DWORD WINAPI Ms(LPVOID pr) { MessageBox(NULL, "Hello", "Hello", MB_OK); return 0; } ...
C++ Контейнер на пободия hash_map. Всем привет. Столкнулся с такой задачей, нужно написать собственный контейнер на подобие hash_map. Почитал Страуструпа, некоторые моменты понятны по созданию контейнеров. Но для меня остается... http://www.cyberforum.ru/cpp-beginners/thread347277.html
Notepad++ и C++ C++
Подскажите, пожалуйста, как связать Notepad++ с компилятором Borland C++? Кто-то говорил, что можно, но не говорил как...
C++ коментарии к прогам..
Помогите пожалуйста расскоментировать подробней программы: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <graphics.h> #include <conio.h> #include <math.h> using...
C++ Отсортировать массив с помощью сортировки методом вставки http://www.cyberforum.ru/cpp-beginners/thread347238.html
Подскажите код,есть такая задачка...Дан двумерный массив заполненый с помощью генератора случайных чисел, отсортировать массив с помощью сортировки методом вставки!!!помогите плз!
C++ Исходники виртуальной машины Здравствуйте! ни у кого случаем нет исходников какой либо виртуальной машины? очень нужно.. хотя бы самый простой.. чтобы около 50 команд подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
02.09.2011, 20:42
Цитата Сообщение от Chelioss Посмотреть сообщение
Все равно не понимаю почему в языке С++ существуют и структуры и классы. Тем более, если оказывается, что и у структур есть наследование, полиморфизм и т.д. и т.п.

Это все основные различия?

Вот еще вопрос:
В книге Дейтейлов "Как программировать на С++" в классе сперва пишут public, потом protected, потом private. А вот на этом форуме наоборот. Как правильно то?
Чтобы было понятно, то надо обратиться к истории языка С++. Он базируется на языке С. В С, как известно, никаких классов нет. Поэтому для реализации классов в С++ в первых версиях использовались структуры. А слово "class" было всего лишь макрокомандой. То есть такого ключевого слова в первых версиях С++ не было. То есть сначала язык С++ был просто препроцессором для С.
Как известно, объектно-ориентированное программирование строится на принципе закрытости реализации. Поэтому по умолчанию у классов их члены имеют спецификатор доступа private. У структур такого нет, так как не забывайте, что нужно обеспечить совместимость с языком С, откуда в С++ пришли структуры. То есть имеет место некоторый дуализм, связаггый с тем, что С++ строится на основе С. С++ должен поддерживать стандартные структуры языка С, а также наделять их новыми качествами. Классы на самом деле также физически реализованы в виде структур.

Что касается спецификаторов доступа, то их можно размещать в любом порядке и в любом количестве. Единственное, чем руководствуются, это читабельностью кода.

Добавлено через 3 минуты
Цитата Сообщение от Overmind024 Посмотреть сообщение
Первый способ следует использовать только в начале изучения языка.
А вот дальнейший выбор зависит от размера программы. Для большой программы лучше использовать второй, а для маленькой третий
Нет, никакого дальнейшего выбора не существует кроме использования квалифицированных имен. Так как если вы используете директиву using SomeName, то вы 1) скрываете такое же имя, которое может быть вам нужно в коде; 2) способствуете возникновению конфликта имен, так как ваше SomeName может заменить другое SomeName, запрятанное где-нибудь далеко в реализации.

Добавлено через 3 минуты
Цитата Сообщение от Chelioss Посмотреть сообщение
И все? Т.е., например, я могу взять простенький класс и вместо class написать struct, при этом помня про различие класса и структуры?

А какой смысл тогда было делать Страуструпу классы, если можно было всего лишь одной свойство в структурах изменить и было бы как классы?
Страуструп не мог изменить одно свойство, так как, как я уже сказал, его первый "компилятор" был просто препроцессором над С. В то время структуры не имели таких свойств класса, как сейчас. Поэтому ему нужно было как-то различать стандартные структуры языка С и свои нововведения, которые он наделял новыми свойствами, чтобы другие программисты не путались.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru