>  기사  >  백엔드 개발  >  C에서 언제 const 객체나 포인터를 반환해야 합니까?

C에서 언제 const 객체나 포인터를 반환해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-29 05:46:311004검색

When Should I Return const Objects or Pointers in C  ?

const 객체를 반환해야 할까요, 아니면 포인터를 반환해야 할까요?

"Effective C Item 03"에서는 가능할 때마다 const를 활용하는 것을 권장합니다. 예를 들어 Bigint 클래스에는 해당 데이터에 액세스하기 위해 변경 가능한 연산자[] 함수 버전과 const 버전이 모두 있을 수 있습니다.

그러나 const 객체 반환과 const가 아닌 객체 반환 간의 차이는 적습니다. 원시 유형을 반환하는 foo()와 같은 간단한 함수의 경우에는 삭제됩니다. 동일하게 동작한다고 가정할 수도 있지만 이는 전적으로 사실이 아닙니다.

최상위 cv 한정자 및 반환 유형

기본 유형의 경우, top- 반환 유형에 대한 레벨 cv 한정자는 무시됩니다. 따라서 다음 함수 선언은 기능적으로 동일합니다.

<code class="cpp">int foo();
int const foo();</code>

두 함수 모두 반환 유형의 const 한정자에 관계없이 int를 반환합니다.

클래스 유형 및 클래스 유형의 중요성 참조

클래스 유형이나 참조를 다룰 때는 구별이 중요합니다. const T를 반환하면 호출자가 반환된 값에 대해 const가 아닌 멤버 함수를 호출하는 것을 방지할 수 있습니다. 다음 예를 고려하십시오.

<code class="cpp">class Test
{
public:
    void f();
    void g() const;
};

Test ff();
Test const gg();

ff().f(); // legal
ff().g(); // legal
gg().f(); // illegal
gg().g(); // legal</code>

여기서 gg()는 const가 아닌 멤버 함수 f() 호출을 금지하는 const Test 객체를 반환합니다.

위 내용은 C에서 언제 const 객체나 포인터를 반환해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.