Language/C, C++
-
[C++] 얕은 복사(shallow copy) vs 깊은 복사(deep copy)Language/C, C++ 2019. 7. 4. 22:57
복사 생성 객체를 생성할 때, 기존에 있던 객체를 복사해서 생성하는 방법을 복사 생성이라고 합니다. class Person { int age; public: Person(int age) { this->age = age; } }; int main() { Person p1(20); // 원본 객체. age = 20으로 생성 Person p2(p1); // 복사된 객체. 원본 객체 p1을 복사해 생성 } 기본적으로 복사된 객체는 원본 객체의 멤버 값과 동일한 멤버 값을 가집니다. 위의 코드에서, p2는 p1을 복사했으므로 멤버 변수 age의 값이 20으로 복사됩니다. 디폴트 복사 생성자 그런데, Person 클래스의 생성자는 Person(int age) 뿐인데 왜 Person p2(p1); 라인에서 컴파일 오..
-
[C/C++] 함수의 호출 방식 - Call by what?Language/C, C++ 2019. 6. 7. 02:17
프로그램에서 함수를 호출할 때 매개변수(Parameter)의 종류에 따라 호출 방식을 분류할 수 있습니다. C언어와 C++에서 사용하는 함수 호출 방식은 다음과 같습니다. 이 중 Call by Reference(참조에 의한 호출)는 C언어에는 존재하지 않습니다. Call by Reference는 C++에서 참조(Reference) 개념이 도입된 이후부터 가능하게 되었습니다. 코드를 통해 각 호출 방식의 차이점을 알아보겠습니다. Call by Value Call by Value는 값에 의한 호출로서, 함수가 매개 변수를 전달받을 때 값을 전달받는 개념입니다. void plus(int a) { a++; // 새로운 변수 a에 ++연산 } int main() { int a = 10; plus(a); // 함수..