안녕하세요. 취업한 공대누나입니다.
MFC를 공부하던 중 C++에 대한 개념이 너무 취약하다는 것을 깨닫고 C++에 대한 공부를 하고 MFC를 다시 공부해자라는 생각이 들었습니다.
C++는 C언어의 발전된 형태라고 할 수 있기 때문에 두 언어는 비슷한 면이 굉장히 많습니다.
1. C언어는 절차지향(Procedural) C++는 객체지향(Multi Paradigm)
대부분의 책, 혹은 사람들이 가장 먼저 말하는 차이점은 이것이 아닐까 싶습니다.
그렇다면 절차지향과 객체지향의 개념에 대해서 알아보고 넘어가보겠습니다.
절차지향
C언어는 절차지향 언어입니다. 즉 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만듭니다. 객체지향 언어보다 더 빨리 처리되어 시간적으로 유리한 측면이 있습니다.
그리고 정해진 순서에 따라서 실행되기 때문에 실행 흐름을 이해하기가 보다 쉽습니다.
객체지향
C++는 객체지향 언어입니다. 즉 구조화된 프로그램을 짤 수 있는데요.
같은 목적이나 기능을 하는 변수나 함수를 하나로 묶어서 객체로 만들고 이 객체를 이용해서 프로그램 전체가 작동하도록 코드를 구성합니다. 그래서 어느 한 부분이 잘못 동작할 경우 그 부분만 수정하면 해결할 수 있습니다.
처리속도가 절차지향보다 느리고 설계에 많은 시간이 소요되지만 코드의 재활용성이 높다는 장점이 있습니다.
그렇다고 두 개념이 반대의 개념이라고 말할 수는 없습니다.
2. 오버로딩
C++에는 같은 이름에 다른 기능을 할 수 있는 오버로딩의 개념이 추가되었습니다.
C언어는 오버로딩을 지원하지 않지만 C++는 오버로딩을 지원합니다.
그렇다면 오버로딩이란 무엇일까요?
예를 한 번 들어보겠습니다
int add (int a, int b){ return a+b; } |
int add (int a, int b, int c) { return a+b+c; } |
두 함수의 이름이 같습니다.
그래서 C언어에서는 오류를 발생시키게 됩니다.
하지만 C++에서는 그렇지 않습니다. C++은 호출하려고 하는 함수를 찾을 때 이름 뿐만 아니라 매개 변수 정보까지 동시에 참조하기 때문입니다.
3. namespace
C++에서는 네임스페이스(namespace)라는 개념을 사용합니다.
C를 배울 때 우리는 식별자의 이름은 같을 수 없다고 배웁니다. 하지만 C++에서는 식별자의 이름이 같을 수 있습니다.
코드 내에서 사용한 식별자가 어떤 네임스페이스에 있는 식별자인지 코드에서 알려준다면 명확하게 구분이 되게 됩니다.
저는 하드웨어 개발자이기 때문에 C언어를 사용해서 프로그래밍을 합니다.
하지만 C++를 공부하는 이유는 다른 여러 언어들을 익혀보고 싶기 때문입니다.
계속 C언어만 해서는 경쟁력이 있을지 과연 의문이 들기도 하구요.
개발자로서 점점 스펙트럼을 넓혀가야 할 것 같은 불안감도 많이 듭니다.
'전자 공학 > C언어 C++' 카테고리의 다른 글
[C++ 독학하기] 1. std, namespace, cout의 개념 (0) | 2021.02.18 |
---|---|
[C++ 독학하기] 0. 파일 소스을(를) 열 수 없습니다. "stdafx.h" (1) | 2021.02.16 |
[C언어 독학하기] 21. 파일 입출력, puts fgetc, fputc (0) | 2020.12.31 |
[C언어 독학하기] 20. 파일 입출력 (fopen_s) (1) | 2020.12.20 |
[C언어 독학하기] 18. 구조체란? struct, typedef (3) | 2020.12.12 |