C언어에 다양한 기능을 추가!!!
- 엄격한 형 검사
- 데이터 추상화
- 객체지향프로그래밍
- 예외 처리
- 템플릿
- 제너릭 프로그래밍 등을 지원!!!!
C와는 다른 C++의 특징
1. C와의 호환성
C++가 C로부터 만들어졌기 때문에 ANSI C와의 호환성을 제공
대부분의 C 프로그램은 C++에서 작동한다.
하지만 C++는 엄격한 형 검사 기능을 제공하므로 유효한 C가 C++에서는 컴파일 안될수도...
2. C보다 나아진 기능
- bool형, True/False 키워드
bool형의 데이터형 제공 / true, false 키워드도 제공
- 엄격한 형 검사
함수 호출 전 반드시 함수 선언 or 정의 필요 / void*형으로의 형 변환은 가능, void* 형의 형변환은 X
- 변수의 문중 선언
- 레퍼런스
다른 변수의 별명. 별명을 통해 다른 이름으로 접근하는 것을 허용
int &ref = num; //ref는 num의 별명
변수 선언시 & 연산자를 사용하면 레퍼런스 라는 의미가 됨
레퍼런스는 자신만의 주소를 따로 갖지 않음
선언 시 반드시 초기화
레퍼런스에 의한 함수 인자 전달 : 밑에서 더 자세힠ㅋ
- new와 delete
- 네임스페이스
- 디폴트 인자
- 인라인 함수
3. 객체지향프로그래밍
- 객체 : 관련된 함수들과 변수들을 사용하기 쉽게 하나로 묶은 것
사용하는 이점?
-> 객체 단위로 관리하여 프로그램의 유지 보수가 쉬워짐
캡슐화를 통해 최소한의 정보만으로 객체를 사용할 수 있게 해줌
- 클래스 간의 상속 : 기존의 클래스의 기능을 이어받는 새로운 클래스
- 인터페이스 : 상속 관계에 있는 클래스들은 같은 사용 방법을 제공
- 다형성 : 같은 인터페이스를 제공하는 서로 다른 클래스는 같은 방법을 사용하더라도 서로 다른 동작을 수행 가능
4. 제너릭 프로그래밍
- 템플릿 : 함수나 클래스를 직접 생성하는 대신 데이터 형을 파라미터로 지정해 함수 코드나 클래스 코드를 생성할 수 있는 기능
-> 데이터 형에 무관하게 같은 알고리즘을 처리하는 함수나 클래스 정의 가능
- 인스턴스화 : 템플릿의 파라미터를 지정하면 특정 데이터 형을 처리하는 함수나 클래스 정의가 컴파일러에 의해 생성
- 데이터를 알고리즘으로부터 분리하여 일반화해서 처리하는 프로그래밍 기법
* 다른 언어와 C++의 차이점
- 멀티패러다임 프로그래밍 지원
절차적, 제너릭, 객체 지향 프로그래밍을 동시에 지원
* 입출력 라이브러리
C++ 만의 입출력 라이브러리 iostream
iostream 라이브러리 에서 표준 출력을 위한 cout 전역 객체 제공
cout << 값;
* 라이브러리의 사용 방법
표준 C++ 라이브러리는 std 네임스페이스를 사용
- 네임스페이스?
프로그램 내 사용되는 변수 이름, 함수 이름, 객체 이름 같은 식별자들을 구별하기 위한 논리적 공간
독립적인 네임스페이스에 속해있으면 같은 이름의 전역 변수나 함수를 여러번 정의 가능
네임스페이스에 정의된 이름에 접근하기 위해서는
네임스페이스 이름::식별자 형식으로 사용해야 함
:: <- 범위 지정 연산자
iostream 라이브러리의 cout 객체는
std 네임스페이스에 정의된 전역 객체 이므로
네임스페이스 명과 함께 지정해서 사용해야 함
std::cout << 값;
하지만 프로그램 상단에
using 문을 이용해 디폴트로 사용할 네임스페이스를 미리 지정해두면
네임스페이스 이름을 생략하고 사용 가능
* 변수 선언
- C++에서는 함수나 블록 내의 어디에서도 변수 선언 가능
미리 생성하는 대신 꼭 필요한 위치에서 생성해서 사용 가능
* 표준 입력 방법
cin >> 변수명;
함수 처리 결과를 리턴 값이 아닌 인자로 받아오고자 할때 사용
출처 : C++ Programming with a WorkBook (이한출판사)
'공부 > C++' 카테고리의 다른 글
클래스와 구조체 (0) | 2014.12.01 |
---|---|
접근제어 (0) | 2014.12.01 |
객체지향 프로그래밍ㅇㅇㅇㅇㅇㅇㅇ (0) | 2014.12.01 |
네임스페이스와 동적 메모리 (0) | 2014.12.01 |
C++의 개선된 함수 기능 (0) | 2014.12.01 |
댓글