언어/C++

1. C와 C++ 차이

에린_1 2023. 1. 16. 21:15
728x90
  • C++ 객체지향 프로그래밍
  • C++에서는 사용자 정의 헤더가 아닌, 표준 헤더들은 .h 생략
  • _tmain은 유니코드를 지원하기 위해 재선언 됨
  • 인스턴스
    • 변수와 같은 의미
    • ex) int a → int 자료형에 대한 인스턴스 a
  • 자료형
    • C와 기본적으로 같다
    • auto, decltype(expr) 추가
  • auto
    • 초기값 형식에 맞추어 선언하는 인스턴스 형식이 자동으로 결정
    • 범위 기반 for문에서 활용
    • 컴파일 시점에 항을 보고 변수의 타입을 결정. 그래서 초기화가 의무적이다.
  • 메모리 동적 할당
    • new와 malloc 차이(메모리 크기 지정 안해도 됨)
    • new[]로 생성한건 delete[]로 삭제 (동적 할당 객체와 객체의 배열은 구조가 다르기 때문에 메모리누수(Memory Leak)가 발생할 수 있다
  • 참조자 형식
    • 포인터와 구조적으로 비슷
    • 선언과 동시에 초기화
    • 상수에는 참조자 선언 불가
    • 참조는 ‘주소’를 의미
    • 참조자는 참조하는 변수를 대신하는 또 하나의 이름(직접 참조) ← 같은 공간이라 메모리소모 x
    • 포인터는 메모리의 주소를 가지고 주소 값을 통한 메모리 접근(간접 참조) ← 메모리 공간 소모(주소값)
  • r-value , l-value
    • l-value는 l-value만 ,r-value는 r-value만 참조 가능
    • l-value는 참조생성자 연산 후에도 매개인자 값이 남아 복사연산.
    • r-value는 참조생성자 연산 후에도 매개인자 값이 남지 않아 이동연산. 원본의 복사가 불가능하도록 유일한 소유권 구현가능 ex) unique_ptr, shared_ptr에서 사용
  • 범위기반 for문
    • 반복 횟수는 배열 요소 개수에 맞춰 자동
    • for(auto n; list) → 읽기만 가능한 접근
    • for(auto &n; list) → 수정도 가능
728x90

'언어 > C++' 카테고리의 다른 글

6. 클래스의 완성  (0) 2023.01.19
5. 연산자 다중정의  (0) 2023.01.17
4. 복사 생성자 & 임시객체  (0) 2023.01.17
3. 클래스  (0) 2023.01.16
2. C++ 함수와 네임스페이스  (0) 2023.01.16