Private 유형에 'auto' 사용
C에서는 비공개 유형에 'auto'를 사용할 수 있다는 것이 직관적이지 않게 보일 수 있습니다. 다음 코드는 다음과 같습니다.
class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } };
일반적으로 액세스를 시도하면 비공개 유형 'Bar'를 직접 사용하면(예: Foo::Bar b = f.Baz();) 오류가 발생합니다. 그러나 'auto'를 사용하는 경우에는 그렇지 않습니다.
int main() { Foo f; auto b = f.Baz(); // ok std::cout << b.i; }
이 동작은 'auto' 규칙과 템플릿 유형 추론 간의 유사성으로 인해 발생합니다. 개인 유형을 템플릿 함수에 전달할 수 있는 방법과 유사합니다.
template <typename T> void fun(T t) {} int main() { Foo f; fun(f.Baz()); // ok }
이 기능은 개인 유형의 이름에는 액세스할 수 없지만 유형 자체는 계속 사용할 수 있다는 사실에서 비롯됩니다. 결과적으로 'auto'는 private 유형임에도 불구하고 유형을 올바르게 추론하여 'b' 변수에 할당할 수 있습니다.
위 내용은 C에서 'auto'를 사용하면 개인 유형을 추론할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!