Почему понятие OO является интерфейсом, не представленным ключевым словом в C++?

Мне удалось заставить приложение работать

a. removing LocalDB database, 
b. deleting the localdb created mdf, ldf files, 
c. installing "SQL server Express" and manually creating the database that the Azure Storage explorer needed, and then configuring Azure Storage explorer to work with "SQL server Express"
.
7
задан Community 23 May 2017 в 11:47
поделиться

8 ответов

Ранними функциями OO C++ долго пропускали, потому что он с тех пор переместился в более интересное направление как язык мультипарадигмы. Главным фокусом больше десятилетия теперь были шаблоны и их последствия, особенно в стандартной библиотеке. Да, программы были бы более читаемыми с interface ключевое слово. Их также было бы легче поддержать, если бы было override и new модификаторы для методов, которые имеют то же имя как методы базового класса (а-ля C#). Но это не интересные проблемы современным пользователям C++, ни тем, кто способствует дизайну языка. Функции OO соответствуют, но не большие, и едва используются в "более новом" (отправьте 1992), части стандартной библиотеки, которая до некоторой степени служит руководством по хорошему стилю.

2
ответ дан 6 December 2019 в 04:47
поделиться

Это избыточно, так как интерфейсы представлены при наличии каждого участника класса быть чисты виртуальный (=0).

17
ответ дан 6 December 2019 в 04:47
поделиться

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

Java и C#, с другой стороны, не разрешайте MI, так как разработчики тех языков чувствовали, что MI создает больше проблем, чем он решает. Но это все еще необходимо для объекта "быть" многими вещами (ООП - отношения), таким образом, интерфейсы обеспечивают механизм, который позволяет объекту быть многими вещами, не наследовав несколько реализаций - хранение ребенка, но вывод вода в ванне.

24
ответ дан 6 December 2019 в 04:47
поделиться

Поскольку интерфейс строго более слаб, чем MI.

4
ответ дан 6 December 2019 в 04:47
поделиться

Добавление "интерфейсного" ключевого слова добавило бы сложность к реализации, не добавляя действительно полезной возможности; это копировало бы существующую функциональность. Как другие сказали, это - просто чистый виртуальный класс. Java и C# должны были иметь 'интерфейс' для получения части того, что уже имел C++. Философски, C++ разработан, чтобы позволить программистам записать хорошее программное обеспечение, не препятствовать тому, чтобы программисты писали плохое программное обеспечение. По моему опыту, шумиха против MI является раздутым путем. Идиоты неправильно использовали его, как они неправильно используют все, и вместо того, чтобы обвинить идиотов в том, что они были идиотами, люди обвинили инструмент.

7
ответ дан 6 December 2019 в 04:47
поделиться

Вот короткая статья от DDJ, который затрагивает различие между классом и интерфейсом.

0
ответ дан 6 December 2019 в 04:47
поделиться

Интерфейс появляется на языках, которые не имеют множественного наследования, для неравнодушного покрытия для этого. C++ уже имеет множественное наследование, таким образом, этому не нужен он.

Кроме того, не все языки должны быть тем же. C++ имеет свой собственный дизайн и историю и имеет его сильные стороны и ее слабые места, точно так же, как Java, C#, и безотносительно. Не было бы полезно попытаться сделать все языки равными.

2
ответ дан 6 December 2019 в 04:47
поделиться

На самом деле "интерфейсное" понятие OO является операциями, которые мог выполнить объект.

Таким образом, языки, такие как Ruby или Python также имеют "интерфейсы", хотя они не должны объявлять их как в Java.

В Java понятие интерфейса OO соответствует этому "интерфейсному" ключевому слову, используемому, чтобы объявить, что объект ответит на определенный контракт (много методов)

C++ имеет понятие также и даже каждый объект Java, который не реализует интерфейса.

0
ответ дан 6 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: