클래스의 맴버 변수는 참조 형식으로 선언할 수 있다.
참초자는 반드시 선언과 동시에 초기화 해야한다. 기억할 것
참조형 멤버는 반드시 생성자 초기화 목록을 이용하여 초기화 한다.
#include <iostream>
using namespace std;
class CRefTest
{
public :
//참조형 멤버는 반드시 생성자 목록을 이용하여 초기화
CRefTest(int &rParam) : m_nData(rParam) { };
//CRefTest( int rParam) : m_nData(rParam) { };
//이 코드는 선언과 정의가 아니다. 인스턴스를 이용하여 연산한 것에 불과
//함수의 매개변수는 함수 내부의 자동 변수와 같으므로 함수가 반환될 때 매개변수는 소멸
// 따라서 m_nData(rParam)는 사라질 대상에 대한 참조자가 초기화 되는 결과를 초래함
// 출력결과는 쓰레기값을 출력하게 됨
int GetData(void) { return m_nData; }
private:
//참조형 멤버는 객체가 생성될 때 반드시 초기화 해야함
int &m_nData;
};
int main() {
int a = 10;
CRefTest t(a); //t 객체를 a로 초기화 함 , 선언과 동시에 초기화
cout << t.GetData() << endl;
a = 20;
cout << t.GetData() << endl;
return 0;
}
출력결과 :
10
20
참조형 맴버 변수로 객체를 초기화 하였기 때문에
a의 값이 바뀌면 함수 반환값이 같이 바뀌어진다.
'자바' 카테고리의 다른 글
Java - 객체지향 - 캡슐화 (0) | 2023.12.10 |
---|---|
Java - 객체지향 - 상속 (1) | 2023.12.10 |
Java - 객체 지향 개요 (0) | 2023.12.10 |
생성자와 소멸자 (2) | 2022.09.20 |
접근 제어 지시자 (0) | 2022.09.19 |