반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

폴크(FOLC)

C++ 생성자 및 this 포인터 본문

교육 관련/C++

C++ 생성자 및 this 포인터

folcjin 2022. 3. 29. 13:16
728x90
반응형

# 생성자 ( constructor )
# 동적 할당으로 객체를 생성하게 되면 독립된 메모리 공간에서 data를 관리
   > 객체 내부에 존재하는 data 들에 대한 초기화를 수행하기 전에는 사용 불가
   > 외부에서 일반적인 초기화 과정을 진행하지 못함
      - 내부 data 에 접근하지 못하는 (private) 경우 때문에
-> 필요 : 객체 생성 후 사용하기 직전까지 멤버를 초기화 하기 위한 접근 가능한 public 함수
   > 객체의 생성과 동시에 data 초기화 해주는 함수 : constructor
   > 객체의 이름과 동일하며 () 함수 형태를 갖는다.
   > 접근 지정 제어자를 public 로 설정

# 특징
   > 매개변수를 전달해서 초기화 진행 가능
   > 여러개의 생성자 함수 오버로딩 처리하여 초기화 진행 가능
   > 반환값이 없다. ( void 생략 )
   > 객체가 생성되는 시점에 compiler 에 의해서 자동으로 호출됨

# 소스 코드
TEST1::TEST1()
{
}
TEST1::TEST1(int value) // 함수 오버로딩
{
}

 

# this 포인터 ( hidden parameter )
# 동적 할당으로 객체를 생성하게 되면 독립된 메모리 공간에서 data를 관리
# 하지만 멤버 함수는 여러개의 동일 객체가 생성되더라고 1개만 생성되어 공유
   > 호출 시 자신을 호출한 객체의 pointer 를 전달 ( hidden parameter )
      - 암시적으로 표현되지/하지 않고 있다.
      - 모든 멤버 함수는 자신의 this 포인터 정보를 보유 ( 해당 함수를 호출한 객체 )

# 특징
   > 포인터 상수이므로 값을 변경하지 못함
   > 클래스, 구조체, 열거체 에서 비 정적 멤버 함수만 이용 가능
   > static ( 정적 ) 멤버 함수는 this 포인터를 갖지 못함 ( 메모리가 독립되어 있음 )

# 소스 코드
const TEST1& TEST1::FunctionCall(const TEST1& rhs)
{
   if(rhs.value > value)
   {
      return rhs;
   }
   return *this;
}

728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --

'교육 관련 > C++' 카테고리의 다른 글

C++ 소멸자  (0) 2022.04.01
C++ 기본/복사 생성자  (0) 2022.03.31
C++ 클래스  (0) 2022.03.27
C++ 함수 특징  (0) 2022.02.28
C++ 파일 연동  (0) 2022.02.25