여기에 C ++ 코드가 있습니다.
이 예제에서 많은 코드 블록은 생성자 호출처럼 보입니다. 불행히도, 블록 코드 # 3은 그렇지 않습니다 ( https://godbolt.org/z/q3rsxn 및 https://cppinsights.io를 사용하여 확인할 수 있음 ).
필자는 구식 C ++ 표기법이며 {} (cf # 4)를 사용하여 새로운 C ++ 11 구성 표기법의 도입을 설명 할 수 있다고 생각합니다.
T(i)생성자 표기법에 가깝지만 의미가 다른 의미에 대한 설명이 있습니까?
struct T {
T() { }
T(int i) { }
};
int main() {
int i = 42;
{ // #1
T t(i); // new T named t using int ctor
}
{ // #2
T t = T(i); // new T named t using int ctor
}
{ // #3
T(i); // new T named i using default ctor
}
{ // #4
T{i}; // new T using int ctor (unnamed result)
}
{ // #5
T(2); // new T using int ctor (unnamed result)
}
}
NB : 따라서 T(i)(# 3)은 T i = T();
1
나는 당신의 모든 진술이 정확하다고 생각합니다.
—
Arne J
@QuentinUK이 링크에 감사드립니다. 나는 함수 (예 :)에 대해 알고
—
Pascal H.
T t()있었지만 그렇게 단순한 선언 표현식은 아닙니다. 확실히, 이것은 vexing 일 수 있습니다 .