본문 바로가기

[EC++] 항목 20. 값에 의한 전달보다는 상수 객체 참조자에 의한 전달 방식을 택하는 편이 대게 낫다. 우선 이번 항목에서는 쟁점이라고 할 수 있는 것은 Pass by Value(Call by value) 의 두가지 문제점을 제기 하는데요. 첫번째는 바로 고비용 문제 입니다. 기본적으로 C++는 함수로부터 객체를 전달받거나 함수에 객체를 전달할 때 값에 의한 전달 방식을 사용하는데요. 특별히 다른 방식을 지정하지 않는 한, 함수 매개변수는 실제 인자의 '사본'을 통해 초기화되며, 어떤 함수를 호출 한 쪽은 그 함수가 반환한 값의 사본을 돌려받습니다. 이들 사본을 만들어 내는 곳이 바로 복사 생성자인데, 이런 점 때문에 고비용의 연산이 되기도 합니다. 한번 예제를 보면서 알아 보도록 하겠습니다. #include #include using namespace std; class person{ public: pe.. 더보기
[C/C++] Call by Value & Call By Reference (값에 의한 호출, 참조에 의한 호출) 1. 값에의한 호출 : 값에 의한 호출은 Call By Value라고 불리우며, 인자로 넘기는 값을 복사해서 새로운 함수에 넘겨주는 방식으로 값의 복사에 의한 함수 호출을 의미합니다. #include using namespace std; void swap(int a, int b); int main() { int val1 = 10; int val2 = 20; swap(val1, val2); cout 더보기
[C++의 특징 - 3] 변수(Variable)와 레퍼런스(Reference) 우선 레퍼런스를 알아 보기 전에 변수에 대해서 간단히 알아 봅시다. 1. 변수 (Variable) : 변수란 메모리 공간에 붙은 이름 이라고 할 수 있습니다. C에서는 하나의 메모리 공간에 하나의 이름만을 가지고 있었는데, C++에서는 하나의 메모리 공간에 둘이상의 이름을 붙여 줄 수 있죠. 그것이 바로 레퍼런스입니다. 2. 레퍼런스 : 이름을 지니는 대상에 별명을 붙여주는 행위. 아래와 같이 사용합니다. int main() { int val =10; int *pVal = &val; //주소 값을 얻기 위해 & 연산자 사용의 예 int &Val = val; //레퍼런스 선언을 위한 &연산자 사용 return 0; } '&' 연산자를 이용해 마음대로 변수에다가 별명을 붙여 줄 수 있는데요. 아래 예제를 보.. 더보기