zyeon's 작심삼일 코딩 공부
C++을 공부하는 이유, 객체 지향 프로그래밍 본문
C++은 C언어를 기반으로 한, 절차 지향 프로그래밍과 함께 객체 지향, 제네릭 프로그래밍 기능을 모두 사용할 수 있게 한 언어이다.
여기서 절차 지향 프로그램밍이란? 프로시저(함수)를 사용하여 프로그램을 작성하는 방식이다. 주어진 작업을 프로시저로 분리하고 호출하여 프로그램을 동작시킨다.
객체 지향 프로그래밍은 다양한 기능을 하는 객체들을 조합하고 상호 작용하면서 원하는 기능을 수행하게 만드는 작업 방식으로, 코드의 재사용을 목표로 한다.
C++의 객체 지향적 기능들
- 클래스(class)
- 하나의 객체의 속성과 동작들을 한곳으로 모아 정의함
- 상속(inheritance)
- 클래스를 상속받아 기존의 코드 재사용 가능
- 다형성(polymorphism)
- 동일한 함수가 객체의 종류에 따라 다르게 동작함
- 연산자 중복(operator overloading)
- 대상에 따라 동일한 연산자를 새로운 연산으로 정의
- 참조 타입(reference type)
- 변수의 별명을 만들어 변수와 같이 사용
- C언어보다 훨씬 풍부한 표준 라이브러리 제공
- 함수 중복(function overloading)
- 매개 변수가 다르면 동일한 이름의 함수를 여러 개 만들 수 있음
- new, delete 연산자
- 동적 메모리 할당과 해제 담당
- 제네릭(generics)
- 클래스 정의를 자료형에 상관없이 재사용함
객체 지향 프로그래밍들의 특징으로 들 수 있는 추상화, 캡슐화, 상속성, 다형성이 나타나는 기능들이다.
C++이 다른 객체 지향 프로그래밍 언어들과 다른 점
우선, 컴퓨터는 이진법으로 이루어진 기계어 형태만 이해할 수 있다. 프로그래밍 언어를 이 기계어로 바꿔주는 작업을 컴파일이라 한다. 컴파일 과정을 마친 이후 프로그램이 동작되는 때를 런타임이라 한다.
파이썬이나 자바 같은 언어들은 메모리 관리 같은 대부분의 작업을 런타임에 하지만, C++은 성능을 중요시하기 때문에 많은 부분을 이 컴파일 시간에 처리한다. 그래서 다른 언어들과 달리 메모리 관리를 프로그래머가 직접 관리해야한다. 따라서 C++은 실행 속도가 빠르고, 게임 같은 고성능을 요하는 프로그램 작업이나 하드웨어가 제한적인 장치인 경우에 유리하다는 장점이 있지만, 난이도가 높아 개발속도가 느릴 수 있다는 단점이 있다.
'c++ 정리' 카테고리의 다른 글
포인터와 배열 (0) | 2024.06.20 |
---|---|
포인터 (0) | 2024.06.17 |
지역변수, 전역변수, 정적변수, 외부변수 (2) | 2024.06.14 |
비트 연산자, 플래그 (1) | 2024.06.05 |
자료형 (0) | 2024.06.04 |