프로그래밍

C++ 참조자

c++ 기본서 보다가 참조자가 은근 어려운 스킬이 좀 많아서 후반부로 들어가니깐 좀 골치아픈데요

 

class Rectangle_1
{
private :
    Point UL;
    Point DR;
public :
    bool InitMembers(Point& ul, Point& dr);
    void ShowInfo();
};

 

 

class Rectangle_2
{
private :
    Point &UL;
    Point &DR;
public :
    bool InitMembers(Point& ul, Point& dr);
    void ShowInfo();
};

 

[main 함수]

Point pos1 = {10,2};

Point pos2 = {10,2};

 

Rectangle_1 sample1;

sample1.InitMembers(pos1, pos2);

 

Rectangle_2 sample2;

sample2.InitMembers(pos1, pos2);

 

------------------

 

class Rectangle_1과 class Rectangle_2 차이는 밑 줄 그어진 멤버 변수만 있는데 궁금한건 class Rectangle_1과 class Rectangle_2의 차이점이

class Rectangle_1은 ul, dr은 pos1, pos2와 동일한 주소인데 멤버변수 UL, DR는 주소가 다른거임?

 

그럼 class Rectangle_1  pos1, pos2와 ul, dr, UL, DR 모두 동일한 주소인가요?

 

아 은근 헷갈림....

10개의 댓글

lsp
2021.12.06

음 이거 컴파일 안될거 같은뎅

0
2021.12.06
@lsp

예시로 만든건데 이론은 맞나요?

0
lsp
2021.12.06
@클로로프렌

아마 Rectangle2는 레퍼런스니까 동일한 주소고, Rectangle1은 다른 주소일거에요.

제가 알기로 이게 컴파일이 안되는게 레퍼런스로 변수 만들면 생성시 초기화가 필요할듯요.

0
@lsp

initializer로 초기값 잡으면 가능하지 않으려나?

0
lsp
2021.12.06
@느그본체만수무강

그래서 생성시 초기화 필요하다구 썼음

0
2021.12.06
@lsp

헤더파일 글거온거라 이니셜라이저 생략했어요

0
2021.12.06
@느그본체만수무강

ㅇㅇ 참조자면 이니셜라이저로 해야 하는데 헤더 파일에는 이니셜라이저 안 써도 되겠지하거 대충 넘긴거임 ㅇㅇ

0
2021.12.07

간단하게 아래 같은 경우를 생각해보면

int a = 0;

int& b = a;

int c = b;

b는 a의 주소를 갖고있고, c는 b 주소에 있는 값을 복사한거임.

b에 값을 대입하면 a가 바뀌고(c는 그대로), c에 값을 대입하면 c만 바뀜.

그러니까 pos1, pos2와 Rectangle_1 의 ul, dr은 주소가 같고, UL, DR 은 주소가 다름.

0
2021.12.07
@LAMP

흠 쉽게 생각하면 참조자를 사용해서 이미 객체 생성된거를 또 생성되는 걸 방지하는 건가요?

 

또한 매개변수이 const int &a이거는 상수,변수를 받기 위함이라고 하는데

 

int &a로 받으면 상수를 못받나요? 이거 좀 어렵네요...

0
2021.12.07
@클로로프렌

InitMembers 함수가 참조변수로 인자를 받는 이유는, 주소를 인자로 전달받는 것의 흔한 이점인 효율적인 메모리 사용을 위한 거라고 생각되네요.

그리고 const int i 라는 변수가 있다면, const int &a = i 는 가능하지만, int &a = i 는 안됩니다. 그냥 문법적인 내용이죠.

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
159870 [잡담] 학원 다니려고 알아봤는데 어때? 1 베시르 0 19 분 전 11
159869 [컴퓨터] 컴잘알 형있어..?도움! 5 무의식의흐름 0 3 시간 전 63
159868 [잡담] 아마 스터터링? 그런거같은데 본체를 바꿔야하나 6 야채싫어 0 6 시간 전 54
159867 [컴퓨터] 노트북 모니터 연결할 때 외장그래픽으로 연결 어떻게 함? 1 평범하게만살자 0 7 시간 전 53
159866 [컴퓨터] KT 공유기랑 모뎀 이거 한개로 줄일 수 있나? 7 쏘붕이 0 8 시간 전 86
159865 [컴퓨터] 케이스 rgb 다 없애고싶은데 1 계피요 0 8 시간 전 68
159864 [컴퓨터] 컴생님들 DLM22 케이스 호환 됩니까? 2 대뇌 0 8 시간 전 47
159863 [컴퓨터] 마이크단자가 없는 노트북으로는 디스코드 못함 ? 16 승범이 0 8 시간 전 69
159862 [컴퓨터] 노트북 서멀 재도포 효과가 생각보다 엄청나구나 1 흑누나 0 9 시간 전 99
159861 [견적] 그래픽 빼고 모니터 포함 100만원 견적 내주실분? 10 띠로롱 0 9 시간 전 51
159860 [잡담] 에이 그냥 rx6600써야겟다 다나까12 0 9 시간 전 48
159859 [잡담] GTX 3070 정상가격이 얼마야? 9 구룩구룩 0 10 시간 전 224
159858 [견적] HDD 10TB, SSD 1TB 12 세쌍둥이대한민국만세 0 10 시간 전 81
159857 [모바일] 형들 내 친구 폰산지8개월됫다는데 호구당한거맞지?? 10 윌럼프 1 10 시간 전 146
159856 [프로그래밍] 랩뷰 아는 사람... 2 레디컬페미니스트돼지 0 10 시간 전 80
159855 [모바일] 노트북 vs 갤럭시탭s7+ 5 3th3 0 11 시간 전 111
159854 [견적] 형님들 이륙 가능할까요? 6 요맘때 0 11 시간 전 62
159853 [모바일] 카톡에서 아이폰 판매하는거 아는사람 있음?? 5 숨펑숨펑 0 11 시간 전 141
159852 [잡담] 국내서 도메인 얻을때 3 어중E 0 12 시간 전 77
159851 [프로그래밍] 공부하다가 궁금해진거 질문있음 6 능금느억맘 0 12 시간 전 122