일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- public
- Pointer
- Contour
- preprocessing
- java
- mfc
- digitalRead
- stream
- aduino
- Barcode
- inheritance
- Overloading
- file access
- wpf
- parameter
- Binary
- compare
- Android
- SERIAL
- Unity
- sensor
- length
- Encapusulation
- Read
- memory
- APP
- Class
- flutter
- atmega328
- UNO
- Today
- Total
폴크(FOLC)
C++ 생성자 및 this 포인터 본문
# 생성자 ( 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;
}