유형이 있고 기본 생성자를 비공개로 만들고 싶다고 가정 해 보겠습니다. 나는 다음과 같이 씁니다.
class C {
C() = default;
};
int main() {
C c; // error: C::C() is private within this context (g++)
// error: calling a private constructor of class 'C' (clang++)
// error C2248: 'C::C' cannot access private member declared in class 'C' (MSVC)
auto c2 = C(); // error: as above
}
큰.
그러나 생성자는 내가 생각한 것처럼 비공개가 아닌 것으로 밝혀졌습니다.
class C {
C() = default;
};
int main() {
C c{}; // OK on all compilers
auto c2 = C{}; // OK on all compilers
}
이것은 나를 매우 놀랍고, 예상치 못한, 명백히 원하지 않는 행동이라고 생각합니다. 왜 괜찮습니까?
C c{};
생성자가 호출되지 않도록 집계 초기화?