목차
- C++의 탄생배경
- C++의 특징 - 객체지향과 절차지향
- C++로 "Hello World!" 출력하기
1. C++의 탄생배경

C++은 1900년도 중반, C를 개발한 벨 연구소의 덴마크 출신 컴퓨터 과학자, Bjarne Stroustrup에 의해 만들어졌습니다.
1972년, C의 개발 이후 시스템 소프트웨어, 게임, 임베디드 등 다양한 응용프로그램들이 개발되었습니다.
컴퓨터 하드웨어의 성능이 발전하고 응용프로그램의 개발에서 필요로 하는 기능들이 늘어남에 따라 C로 작성된 커다란 프로젝트를 관리하는 데 어려움이 생겨났습니다.
프로젝트 관리의 문제의 해결과 발전한 하드웨어를 적극 활용하기 위해 Bjarne Stroustrup은 1979년부터 C언어에 객체지향특성 및 기능을 추가한 새로운 언어를 만들기 시작했습니다.
C의 기능을 모두 내장했기 때문에, C로 작성된 프로그램을 확장하거나 유지보수하는 데에 용이했으며, 객체지향의 장점과 절차지향의 장점을 모두 포함하고 있습니다.
2. C++의 특징 - 객체지향과 절차지향
C++과 C의 가장 큰 차이점으로는 C++은 객체지향, C는 절차지향 언어라는 점입니다.
우선 C는 절차지향 언어로서, 컴파일러는 기본적으로 작성된 코드를 맨 위에서 아래로 읽어내려갑니다.
따라서 코드의 모든 변수와 기능들이 서로 밀접하게 관계되어 유기적으로 동작합니다.
이는 절차지향의 장점이자 단점으로, 큰 흐름을 파악하는 데 용이하다는 장점과 프로젝트의 규모가 커질수록 변수와 기능들을 통제하기 어렵다는 단점을 지니고있다. 10만줄이 넘어가는 코드의 오류를 찾기 위해선 매번 코드를 처음부터 끝까지 검토해야 하는 것입니다.
이러한 단점을 보완하기 위해 C++에서는 객체지향이라는 패러다임이 도입되었습니다.
C++은 객체지향적 특징을 지니면서 절차지향적 특징을 모두 가진, '일반화 프로그램'으로 불리웁니다.
즉, C와 같이 코드를 위에서 아래로 내려읽어가되, 변수와 함수단위로만 구성되지 않고, '객체' 또한 포함하고 있습니다.
C에선 어떠한 기능을 수행하기 위해 여러개의 변수와 한 개 이상의 함수가 유기적으로 작용하며 기능을 수행합니다.
반면 C++에선 어떠한 기능을 수행하기 위해 필요한 변수와 함수들을 모두 묶어 하나의 '객체'로 인식할 수 있습니다.
개념적으로 필요한 기능들을 위한 속성이 비슷한 변수와 함수들을 하나의 '객체'에 모두 넣어두었다가, 객체의 기능이 필요할 때 호출해 객체의 기능들 중 필요한 것을 선택해 통해 기능을 수행합니다.
C++은 객체단위로 기능을 수행할 수 있기 때문에, 코드에서 어떠한 기능에서 오류가 나면, 해당 기능을 수행하는 객체만을 검토하면 되기 때문에 커다란 프로젝트를 관리할수록 유지보수가 용이합니다.
3. C++로 "Hello Wolrd!" 출력하기
vscode를 사용해 "Hello World!"를 출력해보겠습니다.
'C, C++' Extension이 필요하며, 컴파일러를 선택할 때 G++을 선택합니다. 그렇지 않으면 실행이 안됩니다.
helloworld.cpp
#include <iostream>
int main(void) {
std::cout << "Hello World!" << std::endl;
return 0;
}
>>>
Hello Wolrd!
표준 입출력기능을 포함한 iostream을 헤더에 포함해줍니다.
C와 마찬가지로, main함수를 통해 코드를 실행합니다.
std::cout은 C의 printf와 마찬가지로 출력기능을 담당합니다.
std는 standard의 약자로, C++에서 제공하는 표준 라이브러리에 포함된 클래스입니다.
cout은 출력을 담당하는 객체입니다. 전달하고 싶은 방향으로 화살표 기호를 함께 사용합니다.
글을 읽어주셔서 감사합니다.
-male014 25.05.24