c vs c 39 main differences between c
Този урок обяснява основните разлики между езиците C Vs C ++ по отношение на различни функции:
Езикът C ++ е подмножество на езика C.
C ++ за първи път е проектиран като разширение на езика C. По този начин, в допълнение към процедурните езикови функции, получени от C, C ++ поддържа и обектно-ориентирани функции за програмиране като наследяване, полиморфизъм, абстракция, капсулиране и т.н.
В този урок ние обсъждаме някои от основните разлики между езика C и C ++.
Предложено четене => Перфектно ръководство за C ++ за начинаещи
Какво ще научите:
- Основни характеристики на C и C ++
- Основни разлики между C Vs C ++
- Табличен формат: C Vs C ++
- Често задавани въпроси за C и C ++
- Заключение
- Препоръчително четене
Основни характеристики на C и C ++
Преди да продължим с разликите, нека изброим някои от характеристиките на езика C и C ++.
Характеристики и свойства на C
- Процесуално
- Подход отдолу нагоре.
- Език за системно програмиране.
- Не поддържа класове и обекти.
- Поддържа указатели
Характеристики и свойства на C ++
- Обектно-ориентирана
- Подход отдолу нагоре
- Скоростта е по-бърза.
- Богата поддръжка на библиотека под формата на стандартна библиотека с шаблони.
- Поддържа указатели и справки.
- Съставено
Основни разлики между C Vs C ++
По-долу са изброени основните разлики между C Vs C ++.
# 1) Тип програмиране:
C е процедурен език, на който програмата се върти около функциите. Целият проблем е разделен на множество функции. Основният фокус на програмата е върху функциите или процедурите за приключване на нещата.
C ++, напротив, е обектно-ориентиран език за програмиране. Тук данните на проблема са основният фокус и класовете са изградени около тези данни. Функциите работят върху данните и са тясно свързани с данните.
# 2) Подход за програмиране:
Тъй като C е процедурен език, той следва подход на програмиране отгоре надолу. Тук вземаме проблема и след това го разделяме на подпроблеми, докато намерим единични подпроблеми, които могат да бъдат решени директно. След това комбинираме решенията, за да получим основното решение.
C ++ следва подход отдолу нагоре към програмирането. В това започваме с дизайн или кодиране на ниско ниво и след това надграждаме този дизайн на ниско ниво, за да получим решение на високо ниво.
# 3) Разработване на приложения:
Езикът C е полезен при програмирането на вградени системи или реализации на ниско ниво.
C ++, от друга страна, е по-подходящ за сървърни приложения, мрежови приложения или за приложения като игри и т.н.
# 4) Разширение на файла:
Програмите, написани на C, обикновено се записват с разширение „.c“, докато програмите C ++ се записват с разширението „.cpp“.
# 5) Съвместимост помежду си:
C ++ е подмножество на C, тъй като е разработено и взема повечето от процедурните конструкции от езика C. По този начин всяка програма на C ще се компилира и ще работи добре с компилатора C ++.
Езикът C обаче не поддържа обектно-ориентирани функции на C ++ и следователно не е съвместим с C ++ програми. Следователно програмите, написани на C ++, няма да работят на C компилатори.
# 6) Съвместимост с други езици:
Езикът C ++ обикновено е съвместим с други общи езици за програмиране, но езикът C не е.
# 7) Лесно кодиране:
Можем да кажем, че C е практически език и можем да го програмираме по какъвто начин искаме. C ++ се състои от някои обектно-ориентирани програмни конструкции на високо ниво, които ни помагат да кодираме програми от високо ниво.
По този начин, ако кажем, че C е лесно, тогава C ++ също е по-лесен за кодиране.
# 8) Сигурност на данните:
В C основният акцент е върху функциите или процедурите, а не върху данните. Следователно, що се отнася до сигурността на данните, тя е незначителна в C.
В C ++, тъй като имаме работа с класове и обекти, основният градивен елемент на програмата е Data. По този начин данните са здраво защитени с помощта на класове, спецификатори за достъп, капсулиране и т.н.
# 9) Програмно подразделение:
Програмата на C е разделена на функции и модули. След това тези функции и модули се извикват от главната функция или други функции за изпълнение.
Програмата на C ++ е разделена на класове и обекти. Проблемът е проектиран в класове и обектите на тези класове са изпълняващите се единици, които се създават от основните функции и се изпълняват.
# 10) Стандартни I / O операции:
Стандартните операции за вход-изход в C за четене / запис на данни от / към стандартното устройство са съответно ‘scanf’ и ‘printf’.
В C ++ данните се четат от стандартното устройство за въвеждане с помощта на „cin“, докато се отпечатват на изходното устройство с помощта на „cout“.
# 11) Фокус / Акцент:
Като процедурен език, C набляга повече на последователността от стъпки или процедури за решаване на проблем.
C ++, от друга страна, е обектно-ориентиран и по този начин поставя по-голям фокус върху обектите и класовете, около които трябва да се изгради решението.
# 12) Основната () функция:
В C ++ не можем да извикаме функция main () от друга точка. Основната () функция е единичната точка за изпълнение.
На езика C обаче можем да имаме функция main (), извикана от другите функции в кода.
# 13) Променлива:
Променливите трябва да бъдат декларирани в началото на функционалния блок в C, напротив, можем да декларираме променливи навсякъде в програма C ++, при условие че са декларирани преди да бъдат използвани в кода.
# 14) Глобални променливи:
Езикът C позволява множество декларации на глобални променливи. C ++ обаче не позволява множество декларации на глобални променливи.
# 15) Указатели и референтни променливи:
Указателите са променливите, които сочат към адресите на паметта. Както C, така и C ++ поддържат указатели и различни операции, извършвани върху указатели.
Препратките действат като псевдоними за променливите и сочат към същото място в паметта като променлива.
Езикът C поддържа само указатели, а не препратки. C ++ поддържа указатели, както и препратки.
# 16) Изброявания:
Можем да декларираме изброявания в C, както и в C ++. Но в C константите на изброяване са от тип Integer. Това е същото като деклариране на целочислена константа без никакъв вид безопасност.
В C ++ изброяванията са различни. Те са от различни видове. По този начин, за да присвоим цяло число на променлива от изброен тип, се нуждаем от изрично преобразуване на типа.
Можем обаче да присвоим изброена стойност на променлива от цял тип, тъй като изброеният тип позволява интегрална промоция или неявно преобразуване.
# 17) Струни:
Що се отнася до низовете, декларацията ‘char ()’ декларира масив от низове. Но когато низът, деклариран по-горе, се предава между функциите, тогава няма гаранция, че той няма да бъде променен от другите външни функции, тъй като тези низове са променливи.
Този недостатък не е налице в C ++, тъй като C ++ поддържа низов тип данни, който дефинира неизменяеми низове.
# 18) Вградена функция:
Вградените функции не се поддържат в C. C обикновено работи с макроси, за да ускори изпълнението. В C ++, от друга страна, се използват вградени функции, както и макроси.
# 19) Аргументи по подразбиране:
Аргументи / параметри по подразбиране се използват, когато параметрите не са посочени по време на извикването на функцията. Посочваме стойности по подразбиране за параметри в дефиницията на функцията.
Езикът C не поддържа параметри по подразбиране. Докато C ++ поддържа използването на аргументи по подразбиране.
# 20) Структури:
как да напиша тестови случаи при тестване на софтуер с пример
Структурите в C и C ++ използват една и съща концепция. Но разликата е в C, тъй като не можем да включим функции като членове.
C ++ позволява на структурите да имат функции като свои членове.
# 21) Класове и обекти:
C е процедурен език и следователно не поддържа концепцията за класове и обекти.
От друга страна, C ++ поддържа концепцията за класове и обекти и почти всички приложения в C ++ са изградени около класове и обекти.
# 22) Типове данни:
C поддържа вградени и примитивни типове данни. Противно на това, C ++ поддържа потребителски дефинирани типове данни в допълнение към вградените и примитивни типове данни.
Освен това C ++ също поддържа булеви и низови типове данни, които не се поддържат от C.
# 23) Претоварване на функцията:
Претоварването на функцията е възможността да има повече от една функция с едно и също име, но различни параметри или списък с параметри или ред на параметрите.
Това е важна характеристика на обектно-ориентираното програмиране и присъства в C ++. C обаче не поддържа тази функция.
# 24) Наследяване:
Наследяването също е важна характеристика на обектно-ориентираното програмиране, което се поддържа от C ++, а не от C.
# 25) Функции:
C не поддържа функции с аранжименти по подразбиране като параметри по подразбиране и т.н. C ++ поддържа функции с аранжименти по подразбиране.
# 26) Пространство от имена:
Пространствата от имена не се поддържат в C, но се поддържат от C ++ .
# 27) Изходен код:
C е език в свободен формат, който ни дава възможност да програмираме каквото и да било. C ++ произлиза от C и също има обектно-ориентирани функции за програмиране, които го правят по-ефективен по отношение на изходния код.
# 28) Абстракция:
Абстракцията е начинът да се скрият подробностите за изпълнението и да се изложи само необходимия интерфейс на потребителя. Това е една от отличителните черти на обектно-ориентираното програмиране.
C ++ поддържа тази функция, докато C не.
# 29) Капсулиране:
Капсулирането е техника, при която ние капсулираме данните от външния свят. Това спомага за скриването на информация.
C ++ използва класове, които обединяват данни и функциите, работещи с тези данни, в една единица. Това е капсулиране. C няма тази функция.
# 30) Скриване на информация:
Характеристиките на абстракция и капсулиране могат да помогнат за скриване на информация, като излагат от потребителя само необходимите подробности и скриват детайлите като изпълнение и т.н. По този начин можем да подобрим сигурността на данните в нашите програми.
C ++ поставя голям акцент върху данните и използва абстракция и капсулиране за скриване на информация.
C не поставя акцент върху данните и не се занимава със скриване на информация.
# 31) Полиморфизъм:
Полиморфизмът просто означава, че един обект има много форми и това е съществена характеристика на обектно-ориентираното програмиране. Като обектно-ориентиран език, C ++ поддържа полиморфизъм.
C няма поддръжка за обектно-ориентирано програмиране и не поддържа полиморфизъм. Въпреки това можем да симулираме динамичното изпращане на функции в C, използвайки указатели на функции.
# 32) Виртуална функция:
Виртуалните функции, които също се наричат Runtime polymorphism е техника, която се използва за разрешаване на извиквания на функции по време на изпълнение. Това е още една характеристика на обектно-ориентираното програмиране, която се поддържа от C ++, а не от C.
# 33) Програмиране на GUI:
За програмиране, свързано с GUI (графичен потребителски интерфейс), C използва Gtk инструменти, докато C ++ използва Qt инструменти.
# 34) Картографиране:
Що се отнася до картографирането на данни с функции, езикът C е много сложен, тъй като не запазва фокус върху данните.
Докато C ++ има добро картографиране на данни и функции, тъй като поддържа класове и обекти, които свързват данни и функции заедно.
# 35) Управление на паметта:
И C, и C ++ имат ръчно управление на паметта, но начинът на управление на паметта е различен и в двата езика.
В C използваме функции като malloc (), calloc (), realloc () и др., За да разпределим паметта и функция free () за освобождаване на паметта. Но в C ++ използваме оператори new () и delete (), за да разпределяме и освобождаваме паметта съответно.
# 36) Заглавки по подразбиране:
Заглавията по подразбиране съдържат общите извиквания на функции, които се използват в езиците за програмиране главно за въвеждане-извеждане и т.н.
В C ‘stdio.h’ е заглавката по подразбиране, използвана докато C ++ използва като заглавка по подразбиране .
# 37) Обработка на изключения / грешки:
C ++ поддържа обработка на изключения / грешки, използвайки блоковете try-catch. C не поддържа директно обработка на изключения, но можем да се справим с грешки, като използваме известно решение.
# 38) Ключови думи:
C ++ поддържа много повече ключови думи от тази на C. Всъщност C има само 32 ключови думи, докато C ++ има 52 ключови думи.
# 39) Шаблони:
Шаблоните ни позволяват да дефинираме класове и обекти, независими от типа данни. Използвайки шаблони, можем да напишем общ код и да го извикаме за всеки тип данни.
C ++ като обектно-ориентиран използва класове и обекти и по този начин поддържа шаблони. C, от друга страна, не поддържа концепцията за шаблони.
Табличен формат: C Vs C ++
Не | Характеристики | ° С | C ++ |
---|---|---|---|
7 | Лесно кодиране | Позволява ни да кодираме всичко. | Предлага се с високо усъвършенствани обектно-ориентирани концепции. |
един | Тип програмиране | Процесуален език | Обектно-ориентиран език за програмиране. |
две | Подход за програмиране | Подход отгоре надолу | Подход отдолу нагоре |
3 | Разработване на приложения | Добър за вградени устройства, кодиране на системно ниво и т.н. | Добър за работа в мрежа, сървърни приложения, игри и др. |
4 | Разширение на файл | .° С | .cpp |
5 | Съвместимост помежду си | Несъвместим с C ++. | Съвместим с C, тъй като C ++ е подмножество на C. |
6 | Съвместимост с други езици | Несъвместим | Съвместим |
8 | Сигурност на данните | Пренебрежимо малко | Високо |
9 | Програмно разделение | Програма, разделена на функции. | Програма разделена на класове и обекти. |
10 | Стандартни I / O операции | scanf / printf | cin / цена |
единадесет | Фокус / акцент | Набляга на функциите и / или процесите. | Набляга на данните, а не на функциите. |
12 | Основната () функция | Може да извиква main чрез други функции. | Не е възможно да се обадите на main от която и да е точка. |
13 | Променливи | Да се декларира в началото на функцията. | Може да бъде деклариран навсякъде в програмата. |
14. | Глобални променливи | Множество декларации | Няма множество декларации. |
петнадесет | Референтни променливи и указатели | Само указатели | И двете |
16. | Изброявания | Само целочислени типове. | Различен тип |
17 | Струни | Поддържа само char () | Поддържа низ клас, който е неизменим. |
18. | Вградена функция | Не се поддържа | Поддържа се |
19. | Аргументи по подразбиране | Не се поддържа | Поддържа се |
двайсет | Структури | Не могат да имат функции като членове на структурата. | Може да има функции като членове на структурата. |
двадесет и едно | Класове и обекти | Не се поддържа | Поддържа се |
22. | Типове данни | Поддържат се само вградени и примитивни типове данни. Няма булеви и низови типове. | Поддържат се булеви и низови типове в допълнение към вградените типове данни. |
2. 3 | Претоварване на функцията | Не се поддържа | Поддържа се |
24 | Наследяване | Не се поддържа | Поддържа се |
25 | Функции | Не поддържа функции с аранжименти по подразбиране. | Поддържа функции с устройства по подразбиране. |
26 | Пространство от имена | Не се поддържа | Поддържа се |
27 | Програмен код | Свободен формат | Първоначално взето от C плюс обектно-ориентирано. |
28 | Абстракция | Не присъства | Присъства |
29 | Скриване на информация | Не се поддържа | Поддържа се |
30 | Капсулиране | Не се поддържа | Поддържа се |
31 | Полиморфизъм | Не се поддържа | Поддържа се |
32 | Виртуална функция | Не се поддържа | Поддържа се |
33 | GUI програмиране | Използване на инструмента Gtk. | Използване на инструментите Qt. |
3. 4 | Картиране | Не може лесно да картографира данни и функции. | Данните и функциите могат лесно да бъдат картографирани. |
35 | Управление на паметта | Функции Malloc (), calloc (), free (). | Нови () и delete () оператори. |
36 | Заглавки по подразбиране | Stdio.h | iostream заглавка |
37 | Обработка на изключения / грешки | Без пряка подкрепа. | Поддържа се |
38 | Ключови думи | Поддържа 32 ключови думи. | Поддържа 52 ключови думи. |
39 | Шаблони | Не се поддържа | Поддържа се |
Често задавани въпроси за C и C ++
Досега видяхме ключовите разлики между C Vs C ++. Сега ще отговорим на някои от често задаваните въпроси относно C, C ++ и тяхното сравнение.
В # 1) Защо все още се използват C и C ++?
Отговори: C и C ++ все още са популярни въпреки твърде много езици за програмиране на пазара. Основната причина е, че C и C ++ са близки до хардуера. На второ място, можем да направим почти всичко с тези езици.
Ефективността на C ++ е висока в сравнение с други езици. Що се отнася до развитието на вградената система, C изглежда е очевидният избор. Въпреки че един размер не подхожда на всички, има някои приложения и проекти, които могат да бъдат разработени само с помощта на C и C ++.
В # 2) Кое е по-трудно C или C ++? Или кое е по-добро C или C ++?
Отговори: Всъщност и двете са трудни и двете са лесни. C ++ е изграден върху C и по този начин поддържа всички функции на C, а също така има и обектно-ориентирани функции за програмиране. Що се отнася до обучението, C по размер е по-малък с малко понятия за учене, докато C ++ е огромен. Следователно можем да кажем, че C е по-лесно от C ++.
Що се отнася до програмирането, трябва да мислите по отношение на приложението, което разработвате. По този начин, като се има предвид, че приложението ще бъде програмирано, трябва да преценим плюсовете и минусите на двата езика и да решим кой е по-лесен за разработване на приложението.
В заключение можем да кажем, че няма категоричен отговор кой е по-труден или кой е по-добър.
В # 3) Можем ли да научим C ++ без C? Трудно ли е да се научи C ++?
Отговори: Да, можем да научим C ++ лесно, без да знаем C.
По този начин, с правилното мислене и добри познания по програмиране, можете да преминете към C ++, без да докосвате C. Тъй като C е подмножество на C ++, в хода на изучаването на C ++, винаги ще се сдобиете с език C.
В # 4) Кое е по-бързо C или C ++?
Отговори: Всъщност това зависи от това каква функция използваме. Например, ако сме използвали обектно-ориентирани функции за програмиране като виртуална функция в нашата програма C ++, тогава тази програма е длъжна да бъде по-бавна, тъй като винаги са необходими допълнителни усилия за поддържане на виртуални таблици и други подробности за виртуалните функции.
Но ако използваме нормални функции в C ++, тогава тази програма C ++ и всяка друга програма на C ще имат същата скорост. По този начин зависи от фактори като приложението, което разработваме, функциите, които използваме и т.н.
В # 5) Добър ли е началният език C ++?
Отговори: Отговорът е Да и Не.
Да, защото можем да научим всеки език за програмиране, ако имаме подходящата мотивация, време за инвестиране и воля за учене. Единственото условие е да имате основни компютърни познания и основна терминология за програмиране.
По този начин, когато започнем с C ++, стига да изучаваме основите на езика и други конструкции като цикли, вземане на решения и т.н., това е доста лесно като всеки друг език.
Сега ще стигнем до No part.
Знаем, че C ++ е много обширен и има много функции. По този начин, докато напредваме в обучението си, може да се сблъскаме с много предизвикателства в програмирането на C ++, така че като начинаещ може да не сме в състояние да се справим с тях.
Само си представете ситуацията, когато започвам с C ++ като първи език и срещам изтичане на памет !! Следователно е добре да започнем с прости езици като Python или Ruby. Хванете се на програмирането и след това отидете на C ++.
Заключение
В този урок разгледахме основните разлики между езиците C Vs C ++ по отношение на различни функции.
Докато C е процедурен език, а C ++ е обектно-ориентиран език за програмиране, видяхме, че много функции са изключителни за C ++. Тъй като C ++ произлиза от C, той поддържа много от функциите, които се поддържат от C.
В следващите уроци ще продължим да обсъждаме разликите между C ++ и други езици за програмиране като Java и Python.
=> Вижте пълната серия за обучение на C ++ тук
Препоръчително четене
- Урок за основната функция на Python с практически примери
- Git срещу GitHub: Разгледайте разликите с примери
- TDD Vs BDD - Анализирайте разликите с примери
- 70+ НАЙ-ДОБРИ уроци за C ++, за да научите БЕЗПЛАТНО програмиране на C ++
- Функции за дата и час в C ++ с примери
- Как работи тестването, управлявано от данни (примери за QTP и селен)
- Сортиране на черупката в C ++ с примери
- Урок за Python DateTime с примери