C++의 객체 지향 특성과 장단점
1. 캡슐화
데이터를 캡슐로 싸서 외부의 접근으로부터 보호함(class 키워드를 사용해서 표현)
클래스 : 객체를 만드는 틀
객체 : 클래스라는 틀에서 생긴 실체
붕어빵 틀이 클래스라면, 붕어빵은 객체와 같음
2. 상속성
객체 지향 상속 : 자식이 부모의 유전자를 물려받는 것과 유사
C++에서는 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 가지고 생성된다.
3. 다형성
하나의 기능이 경우에 따라 다르게 보이거나 다르게 작동하는 현상
연산자 중복, 함수 중복, 함수 재정의(overriding)
연산자 중복
5+2 -> 7
"가을" + "바람" -> "가을바람"
함수 중복
void add(int a, int b){...}
void add(int a, int b, int c){...}
void add(int a, double b){...}
형태를 바꾸어 재사용
함수 재정의
부모 클래스에 정의된 멤버 함수를 자식 클래스에서 다시 정의하는 것
4. 제네릭(일반화) 프로그래밍
함수 중복은 편리하지만 동일한 코드가 반복되어 중복된 함수를 여러 번 정의하고 구현해야 한다는 단점이 있다.
제네릭 프로그래밍은 데이터의 유형에 구애받지 않고 재사용될 수 있는 프로그래밍 방법이다.
템플릿 : 매개변수의 타입만 다른 중복된 함수들을 일반화시키는 틀
이와 같은 방법으로 중복된 함수들을 템플릿 함수로 바꾸는 과정을 일반화라고 한다. 이렇게 된 함수의 타입을 제네릭이라고 정의한다.
다만 이 방법은 컴파일 속도가 느려지는 단점이 있다.
* C++의 장점과 단점
장점 : C언어와의 호환성을 추구하므로 기존에 개발된 C 프로그램의 코드를 활용할 수 있음
절차 지향, 객체 지향, 제네릭 프로그래밍 등 대다수 패러다임을 지원한다.
수동 메모리 관리방식으로 성능 하락을 방지한다.
단점 : 개발자가 신경 써야 할 부분이 많다.
신생 언어에 비해 생산성이 떨어지는 편이다.
메모리 관리의 자유도가 높은만큼 실수하기 쉽고 까다롭다.
C언어의 호환성을 추구함에 따라 C의 단점까지 안고 있다. 코드 간 의존성 문제로 컴파일이 느린 편이다.
'C++' 카테고리의 다른 글
C++ 04 : 클래스 사용법, this의 활용, 생성자와 소멸자, 멤버 변수 초기화 방법 (0) | 2022.04.09 |
---|---|
C++ 03 : 문자열 연산과 문자열 비교 (0) | 2022.04.09 |
C++ 02 : 문자열 입력받기, cin, getline() (0) | 2022.03.27 |
C++ 01 : cout, cin 표준 입출력, std::와 namespace (0) | 2022.03.26 |
C++의 특징 정리 (0) | 2022.03.14 |