기본 생성자와 소멸자에 대한 "=default"와 "{}"의 차이점 이해
"=default"와 "{ }"는 기본 생성자와 소멸자에 대해 서로 바꿔서 사용할 수 있는 것처럼 보일 수 있지만 가상이 아닌 소멸자와 소멸자를 고려할 때 중요한 차이점이 있습니다.
가상이 아닌 소멸자
가상이 아닌 소멸자를 처리할 때 "=default" 구문이 중요한 역할을 합니다. 이는 사소한 클래스의 경우와 마찬가지로 자동으로 소멸자를 생성하도록 컴파일러에 지시하여 유형을 사소한 것으로 간주하게 합니다. 반면, "{}"는 사용자 제공 소멸자를 생성하여 클래스의 사소성 상태를 변경합니다.
비가상 생성자
마찬가지로, -가상 생성자, "=default"를 사용하면 컴파일러가 단순성을 유지하면서 기본 생성자를 생성할 수 있습니다. 그러나 "{}"는 사용자가 제공한 생성자를 지정하여 클래스의 단순성에 잠재적으로 영향을 미칠 수 있습니다.
Trivial Classes
C 11에서 trivial 클래스는 다음과 같은 클래스를 의미합니다. 사용자가 제공한 특수 멤버 함수(기본 생성자, 복사/이동 생성자/할당, 소멸자)가 없습니다. 이러한 함수는 자동으로 생성되므로 memcpy와 같은 최적화를 적용할 수 있습니다.
예
다음 코드를 고려하세요.
struct Trivial { int foo; }; struct NotTrivial { int foo; NotTrivial() {} }; struct Trivial2 { int foo; Trivial2() = default; };
결론
"=default"와 "{}"는 비슷해 보이지만 사용될 경우 클래스의 사소함에 상당한 영향을 미칠 수 있습니다. 가상이 아닌 소멸자 또는 생성자를 사용합니다. "=default"는 컴파일러의 기본 동작을 유지하고 단순성을 유지하는 반면, "{}"는 사용자 제공 함수를 생성하고 잠재적으로 클래스의 단순성 상태를 변경합니다.
위 내용은 C의 기본 생성자와 소멸자의 '=default'와 '{}'의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!