C 템플릿 매개변수 추론이 생성자와 작동하지 않는 이유(C 17까지)?
Nov 29, 2024 pm 05:11 PMC가 생성자에서 템플릿 매개변수를 추론할 수 없는 이유는 무엇입니까?
C를 사용하면 컴파일러가 함수 매개변수에서 템플릿 매개변수를 추론할 수 있으므로 간결하고 유형이 안전한 코드가 가능합니다. 그러나 클래스 생성자에는 이 기능을 사용할 수 없습니다. 왜 그럴까요?
예제 코드에서는 생성자가 클래스의 유일한 진입점이 아니기 때문에 컴파일러는 Variable에 대한 템플릿 매개변수를 추론할 수 없습니다. 복사 생성자와 할당 연산자는 객체를 생성하고 수정하는 대체 방법을 제공합니다.
다음 시나리오를 고려하십시오.
MyClass m(string s); MyClass *pm; *pm = m;
이 경우 컴파일러는 객체에 어떤 템플릿 유형이 필요한지 알 수 없습니다. 마이클래스 오후. 생성자에 전달된 인수에서 유형을 추론하는 것은 가능하지만 할당이 포함되면 불확실해지기 때문에 의도한 유형을 결정하기가 어렵습니다.
또한 유형 추론이 바람직하지 않은 경우가 있을 수 있습니다. 예를 들어, 클래스에는 다양한 목적으로 다양한 유형을 허용하는 생성자가 있을 수 있습니다. 템플릿 유형을 추론하면 클래스 인터페이스에 의도하지 않은 제약이 적용될 수 있습니다.
C 17 개발
C 17에서는 생성자 인수에서 유형 추론을 도입할 것으로 예상된다는 점에 주목할 필요가 있습니다. 이렇게 하면 다음 구문이 활성화됩니다.
std::pair p(2, 4.5); std::tuple t(4, 3, 2.5);
그러나 유형 추론은 편리한 기능이며 항상 적합하지 않을 수 있다는 점을 기억하는 것이 중요합니다. 제한 사항 뒤에 있는 이유를 이해하면 개발자가 강력하고 유지 관리가 가능한 C 코드를 작성하는 데 도움이 됩니다.
위 내용은 C 템플릿 매개변수 추론이 생성자와 작동하지 않는 이유(C 17까지)?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 함수에 의해 반환 된 값 유형은 무엇입니까? 반환 값을 결정하는 것은 무엇입니까?

STL (정렬, 찾기, 변환 등)의 알고리즘을 효율적으로 사용하려면 어떻게합니까?
