#include<iostream>
using namespace std;
int main()
{
int x = 5;
int& ref_x = x;
return 0;
}
이게 참조해주는 간단한 식입니다.
여기서 만약 int& ref_x = 5; 이런 식으로 바꾸면 어떻게 될까요?
그럴 경우 오류가 나게 됩니다. 왜냐하면 5에는 주소가 따로 존재하기 않기 때문입니다. 하지만 const를 앞에 붙이면 가능합니다. const int를 붙이면 임시적으로 컴파일러가 주소를 만들어준다 이런 식으로 생각을 해주시면 됩니다.
#include<iostream>
using namespace std;
void doSomething(const int& x)
{
cout << x << endl;
}
int main()
{
int a = 1;
doSomething(a);
doSomething(1);
doSomething(a + 3);
doSomething(3 * 4);
return 0;
}
위 함수에는 doSomething이 정의되어 있습니다.
doSomething에서는 매개변수 x가 상수 참조로 선언되어 있는 것인데요. 함수 내에서 x에 대한 변경을 허용하지 않습니다.
먼저 정수형 변수를 1로 초기화하고 doSomething을 불러옵니다. 그 후 상수참조를 이용해서 출력하는 기본적인 참조의 예제입니다.
포인터와 참조의 멤버 선택 연산자
#include<iostream>
using namespace std;
struct Person
{
int age;
double weight;
};
int main()
{
Person person;
person.age = 5;
person.weight = 30;
Person& ref = person;
ref.age = 15;
Person* ptr = &person;
ptr->age = 30;
(*ptr).age - 20;
Person& ref2 = *ptr;
ref2.age = 45;
cout << &person << endl;
cout << &ref2 << endl;
}
이 예제는 포인터나 reference를 struct나 clases에 대해서 사용을 할 때 내부의 멤버를 어떻게 선택할 것인가에 대해서 알아보았습니다.
처음같이 person.age = 5; 이런 식으로 정의를 해주어도 되며 참조를 사용하여 Person& ref = person; 이런 식으로 해준 다음에 ref.age 이런 식으로 해주셔도 됩니다.
포인터는 Person* ptr = &person; ptr->age = 30; 이런 식으로 써주시면 되는데요. ptr-> 말고 (*ptr) 이런 식으로도 가능합니다. 이런 식으로 참조와 포인터가 struct나 class의 멤버를 선택할 때 어떻게 하는지 간단하게 보았는데요. 이것에 익숙해져서 코딩에 활용하시면 됩니다.
'IT 프로그래밍 > C++' 카테고리의 다른 글
[따배시 6 .19] 다중 포인터와 동적 다차원 배열 (0) | 2024.03.30 |
---|---|
[따배시 6.17~18] for-each 반복, void 포인터 (0) | 2024.03.30 |
[따배시 6.14] 참조 변수 (0) | 2024.03.30 |
[따배시 6.13] 포인터와 const (0) | 2024.03.29 |
[따배시 6.11] 메모리 동적할당 new와 delete (1) | 2024.03.29 |