디필의 요모조모

명품 C++ Programming 4장 요약 본문

Programming Language/C++

명품 C++ Programming 4장 요약

Diphylleia12 2020. 10. 13. 21:28

<4장 객체 포인터와 객체 배열, 객체의 동적 생성>

 

객체 포인터

  • C++에서는 객체의 주소를 가지는 객체 포인터를 선언하고 활용할 수 있다.
  • 객체 포인터로 객체의 멤버에 접근할 때 -> 연산자를 사용한다.
  • 초기화되지 않는 객체 포인터를 사용하면 null pointer assignment 실행 오류가 발생한다.

객체 배열

  • 객체 배열의 선언 및 활용 방법은 기본 타입 배열과 동일하다.
  • 객체 배열이 생성될 때 배열의 각 원소 객체마다 기본 생성자가 실행되며배열이 소멸될 때 각 원소 객체마다 소멸자가 실행된다원소 객체는 인덱스가 높은 곳에서 낮은 순으로 소멸된다.
  • 객체 배열은 다음과 같이 생성자를 이용하여 초기화할 수 있다.
Circle circleArray[3] = { Circle(10), Circle(20), Circle() };

 

동적 메모리 할당 및 반환

  • new 연산자로 동적 메모리를 할당받고, delete 연산자로 할당받은 메모리를 반환한다.
  • new로 기본 타입의 배열을 할당받고, delete로 소멸할 수 있다.

객체와 객체 배열의 동적 생성 및 반환

  • new delete를 이용하여 객체를 할당 받고 반환할 때, 생성자와 소멸자가 각각 실행된다.
  • new와 delete를 이용하여 객체 배열을 할당 받고 반환할 수 있으며이때 배열의 각 객체마다 생성자와 소멸자가 실행되고소멸자는 생성된 반대순으로 실행된다.
  • new로 객체 배열을 생성할 때는 기본 생성자가 호출된다.
  • new로 할당받은 메모리는 실행 중에 delete를 이용하여 반환하지 않는 한 시스템에 반환되지 않는다동적으로 할당받은 메모리에 대한 주소를 잃어버리게 되면 메모리 누수가 발생한다프로그램이 종료하면 동적으로 할당받은 메모리는 자동 반환된다.

this 포인터

  • this는 객체 자신에 대한 포인터이다.
  • 객체의 멤버 함수가 호출될 때 컴파일러는 객체의 주소를 멤버 함수에 묵시적으로 전달하며, this는 이 주소를 받도록 컴파일러에 의해 몰래 삽입된 매개 변수의 이름이다.
  • 클래스의 non-static 멤버 함수에서만 사용할 수 있다.

string 클래스를 이용한 문자열 사용

  • string 클래스는 C++ 표준 라이브러리에 포함된 것으로 문자열을 다루는 클래스이다.
  • <string> 헤더 파일에 선언되어 있다.
  • string 클래스는 문자열의 길이에 따라 문자열을 저장하는 내부 메모리의 크기를 자동으로 조절하므로 사용하기 편리하고문자열 조작을 위한 많은 멤버 함수와 연산자 함수를 제공한다.
  • 문자열을 키보드로부터 입력 받기 위해 <string> 헤더 파일에 선언된 getline() 전역 함수를 이용하면공백 문자를 포함하는 문자열을 입력받을 수 있다.
  • stoi() 함수를 이용하면 문자열을 숫자로 변환할 수 있다.
Comments