프로그래밍

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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5694 [프로그래밍] 아 시발 퇴사마렵다 9 인간지표 0 20 시간 전 283
5693 [프로그래밍] C#이 ㅈ사기 언어인 이유 17 ye 4 1 일 전 788
5692 [프로그래밍] 요즘 모바일 개발은 어떤 걸 사용하나요? 13 커피좋아용 0 3 일 전 338
5691 [프로그래밍] 취준생 안드로이드 팀플 주제 머할까요... 8 조강현 0 4 일 전 232
5690 [프로그래밍] 공통코드테이블은 대체 왜 만드냐 9 잠적자 0 5 일 전 432
5689 [프로그래밍] 토이프로젝트 주제 선정 3 개드립눈팅1세대 0 5 일 전 232
5688 [프로그래밍] 엥 구글 플러터 유기각 재는거임?? 4 최수연 0 7 일 전 362
5687 [프로그래밍] 반도체 장비 업계인 있음? 9 캡틴띠모 0 8 일 전 298
5686 [프로그래밍] 안드로이드 책 추천좀 6 집에가게해줘 0 9 일 전 160
5685 [프로그래밍] 폰 스크리닝 해 본 사람 있어? 3 무지개빛푸딩 0 9 일 전 396
5684 [프로그래밍] jsp 트리메뉴 만들고있는데 구상한게가능한지 의견좀물어볼께 11 평택국 0 10 일 전 177
5683 [프로그래밍] JPA 도와줘어억 ㅠ 10 모그리또 0 10 일 전 266
5682 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 12 일 전 382
5681 [프로그래밍] 그 혹시 게임쪽 종사자 있음? 17 god79ii 0 16 일 전 640
5680 [프로그래밍] 코린이 ㅅㅂ 뭐가 문젠지 모르겠어요 9 집에가게해줘 0 16 일 전 465
5679 [프로그래밍] Dear Imgui 라고 아시나요? 2 년째모쏠 0 16 일 전 251
5678 [프로그래밍] 현업개발자분들 주말엔 편하게 쉴수있나요? 10 키로 0 17 일 전 889
5677 [프로그래밍] 무엇이든 물어보세요. 28 변현제 0 19 일 전 424
5676 [프로그래밍] 개발자보단 엔지니어가 취업이 잘됨 5 iillillill 2 20 일 전 769
5675 [프로그래밍] 프론트엔드 개발자 연봉 1억 넘는 사람 있어? 13 잠적자 0 20 일 전 669