Мне удалось заставить приложение работать
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"
. Ранними функциями OO C++ долго пропускали, потому что он с тех пор переместился в более интересное направление как язык мультипарадигмы. Главным фокусом больше десятилетия теперь были шаблоны и их последствия, особенно в стандартной библиотеке. Да, программы были бы более читаемыми с interface
ключевое слово. Их также было бы легче поддержать, если бы было override
и new
модификаторы для методов, которые имеют то же имя как методы базового класса (а-ля C#). Но это не интересные проблемы современным пользователям C++, ни тем, кто способствует дизайну языка. Функции OO соответствуют, но не большие, и едва используются в "более новом" (отправьте 1992), части стандартной библиотеки, которая до некоторой степени служит руководством по хорошему стилю.
Это избыточно, так как интерфейсы представлены при наличии каждого участника класса быть чисты виртуальный (=0).
Поскольку C++ позволяет множественное наследование, и потому что интерфейс является абстрактным классом, который имеет весь, его - участники, также абстрактному/виртуальному, C++ не нужен он - класс может просто "расширить" несколько других классов, любой из которых может быть чисто виртуальным (краткий обзор).
Java и C#, с другой стороны, не разрешайте MI, так как разработчики тех языков чувствовали, что MI создает больше проблем, чем он решает. Но это все еще необходимо для объекта "быть" многими вещами (ООП - отношения), таким образом, интерфейсы обеспечивают механизм, который позволяет объекту быть многими вещами, не наследовав несколько реализаций - хранение ребенка, но вывод вода в ванне.
Добавление "интерфейсного" ключевого слова добавило бы сложность к реализации, не добавляя действительно полезной возможности; это копировало бы существующую функциональность. Как другие сказали, это - просто чистый виртуальный класс. Java и C# должны были иметь 'интерфейс' для получения части того, что уже имел C++. Философски, C++ разработан, чтобы позволить программистам записать хорошее программное обеспечение, не препятствовать тому, чтобы программисты писали плохое программное обеспечение. По моему опыту, шумиха против MI является раздутым путем. Идиоты неправильно использовали его, как они неправильно используют все, и вместо того, чтобы обвинить идиотов в том, что они были идиотами, люди обвинили инструмент.
Вот короткая статья от DDJ, который затрагивает различие между классом и интерфейсом.
Интерфейс появляется на языках, которые не имеют множественного наследования, для неравнодушного покрытия для этого. C++ уже имеет множественное наследование, таким образом, этому не нужен он.
Кроме того, не все языки должны быть тем же. C++ имеет свой собственный дизайн и историю и имеет его сильные стороны и ее слабые места, точно так же, как Java, C#, и безотносительно. Не было бы полезно попытаться сделать все языки равными.
На самом деле "интерфейсное" понятие OO является операциями, которые мог выполнить объект.
Таким образом, языки, такие как Ruby или Python также имеют "интерфейсы", хотя они не должны объявлять их как в Java.
В Java понятие интерфейса OO соответствует этому "интерфейсному" ключевому слову, используемому, чтобы объявить, что объект ответит на определенный контракт (много методов)
C++ имеет понятие также и даже каждый объект Java, который не реализует интерфейса.