Является ли C ++ полностью объектно-ориентированным языком? - PullRequest
12 голосов
/ 28 октября 2009

Я читал, что светские разговоры полностью объектно-ориентированы. Является ли C ++ полностью объектно-ориентированным? если нет .. то почему так ??

Ответы [ 9 ]

31 голосов
/ 28 октября 2009

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

C ++ поддерживает объектно-ориентированное программирование, но OO не присущ языку. На самом деле основная функция не является членом объекта.

В smalltalk или Java вы не можете связать свои туфли (или написать «Hello, world») без хотя бы одного класса.

(Конечно, можно утверждать, что Java также является полностью объектно-ориентированным языком, потому что его примитивы (скажем, int) не являются объектами.)

4 голосов
/ 28 октября 2009

C ++ содержит диалект 'C' в качестве подмножества, допускающего чисто процедурный стиль кода.

3 голосов
/ 28 октября 2009

Большие аргументы против объявления C ++ как «чистого» OO состоят в том, что ему все еще требуется по крайней мере один не-OO бит, main(), и что не все является объектом (int , long и др.).

Он также предоставляет состояние объекта для манипуляции без использования парадигмы передачи сообщений (открытые члены). Это нарушает инкапсуляцию объектов.

Java, с другой стороны, имеет main() как статический метод класса, так что он ближе, но в нем все еще есть не-объектные вещи.

Smalltalk - это лингва франка, которую обычно считают чистейшим из чистых, но я не знаю достаточно об этом, чтобы комментировать.

Я, я склонен оставлять такие аргументы для интеллигенции, пока я занимаюсь разработкой кода и доставкой своим клиентам: -)

1 голос
/ 28 октября 2009

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

Основная причина в том, что C ++ произошел от C - когда Страуструп создал язык, он намеревался создать новую версию C (с классами). фактически он пытался представить свое творение как новый аромат C (C84).

1 голос
/ 28 октября 2009

Определить OOL. Если вы имеете в виду использование классов и т. Д., То C ++ поддерживает OO-стиль программирования среди других. Там нет ничего, что мешает вам не использовать классы. Java OTOH, не допускает, кроме классов. (Да, я знаю, что Java поддерживает FP.)

0 голосов
/ 15 октября 2013

C ++ - это не что иное, как «C с классами». Я все еще могу написать программу на C и сохранить ее как файл .cpp. Итак, Proof косвенно говорит: «C ++ не является чисто объектно-ориентированным языком».

0 голосов
/ 28 октября 2009

конечно нет !! Он поддерживает внутренние типы данных.

0 голосов
/ 28 октября 2009

Нет, это не чисто объектно-ориентированный язык. В частности, примитивные типы данных в C ++ имеют правила, которые часто отличаются от типов данных, которые не являются примитивными. Кроме того, можно иметь функции, которые вообще не связаны с каким-либо типом данных. Существует множество других способов, которыми C ++ не является чисто объектно-ориентированным языком, но это две основные причины.

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

0 голосов
/ 28 октября 2009

C ++ не является чисто объектно-ориентированным языком, и, как уже упоминалось, ничто не заставляет вас использовать концепции ООП в C ++. C ++ - это то, что вы называете гибридным объектно-ориентированным языком, поскольку он основан на C, который является чисто процедурным языком.

Примерами чисто объектно-ориентированных языков являются C # и JAVA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...