> 백엔드 개발 > C++ > 본문

C++ 함수 매개변수에 대한 자세한 설명: 참조 매개변수의 어두운 복사본과 얕은 복사본 간의 차이점

PHPz
풀어 주다: 2024-04-26 18:45:02
원래의
834명이 탐색했습니다.

C++에서 함수에 전달되는 매개변수는 값 전달과 참조 전달로 나눌 수 있습니다. 참조 매개변수에는 얕은 복사 참조와 깊은 복사 참조라는 두 가지 유형이 있습니다. 얕은 복사 참조는 참조 자체를 함수에 전달하여 함수가 원본 객체를 수정할 수 있도록 합니다. 깊은 복사 참조는 참조 매개변수가 참조하는 개체의 복사본을 전달합니다. 함수에 의한 복사본 수정은 원본 개체에 영향을 주지 않습니다. 함수가 객체를 수정해야 하는 경우 얕은 복사 참조를 사용하고, 불필요한 복사본을 피할 때도 얕은 복사 참조를 사용합니다. 깊은 복사 참조는 함수가 객체를 수정해서는 안되거나 객체가 불변일 때 사용됩니다.

C++ 函数参数详解:引用参数的深浅拷贝差异

C++ 함수 매개변수에 대한 자세한 설명: 참조 매개변수의 어두운 복사본과 얕은 복사본의 차이점

C++에서는 함수에 전달되는 매개변수에는 값 전달과 참조 전달이라는 두 가지 주요 유형이 있습니다. 참조 매개변수는 값으로 전달하는 것과는 달리 객체나 변수의 복사본이 아닌 참조를 전달하여 작동합니다.

참조 매개변수 유형

두 가지 참조 매개변수 유형이 있습니다.

  • 얕은 복사 참조: 참조 매개변수 자체는 참조하는 개체가 아닌 함수에 전달됩니다. 함수가 원본 객체를 수정할 수 있게 해줍니다.
  • 심층 복사 참조: 전달되는 것은 참조 매개변수에 의해 참조되는 객체의 복사본입니다. 함수에 의한 복사본 수정은 원본 객체에 영향을 주지 않습니다.

코드 예제

다음 이미지는 두 가지 참조 매개변수 유형 간의 차이점을 보여줍니다.

// 浅拷贝引用
void shallow_copy(int& a) {
  a++;
}

// 深拷贝引用
void deep_copy(const int& a) {
  int b = a;
  b++;
}

int main() {
  int x = 5;

  // 浅拷贝引用示例
  shallow_copy(x); // 改变 x 的值
  cout << "x after shallow copy: " << x << endl;  // 输出 6

  // 深拷贝引用示例
  deep_copy(x); // 不改变 x 的值
  cout << "x after deep copy: " << x << endl;  // 输出 5
  
  return 0;
}
로그인 후 복사

사용 시나리오

얕은 복사 참조는 다음 상황에서 유용합니다.

  • 함수가 전달된 개체를 수정해야 하는 경우 또는 변수.
  • 들어오는 객체나 변수가 큰 경우 불필요한 복사를 피하세요.

깊은 복사 참조는 다음 상황에서 유용합니다.

  • 함수가 전달된 개체나 변수를 수정해서는 안 되는 경우.
  • 전달된 객체나 변수가 불변인 경우.

위 내용은 C++ 함수 매개변수에 대한 자세한 설명: 참조 매개변수의 어두운 복사본과 얕은 복사본 간의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿