1
왜이 코드가 2 가지 다른 경고를 유발합니까?내장되지 않은 유형 및 클래스는 사용하지 않으면 왜 다르게 처리됩니까?
class Abc
{
public:
Abc() = default;
Abc(Abc const&) = default;
};
int main()
{
int val1{int()};
Abc val2{Abc()};
}
편집 출력 :
main.cpp: In function 'int main()':
main.cpp:10:9: warning: unused variable 'val1' [-Wunused-variable]
int val1{int()};
^~~~
main.cpp:11:9: warning: variable 'val2' set but not used [-Wunused-but-set-variable]
Abc val2{Abc()};
^~~~
나를 위해 같은 경고가 나타납니다 ... (사용하지 않은 변수). 나는 그것이 컴파일러에 달려 있다고 생각한다. –
당신은 쉽게 clang에서 이것을 시도해보고 출력을 볼 수있는 곳이 있는가? 내 경험에 의하면 gcc는 오류가 강력하지 않습니다. 첫 번째 경우에서 일어나는 일은 변수를 int로 선언한다는 것입니다 (int fucntion은 무엇을합니까? 무작위 값을 부여합니까?) 두 번째 경우에는 어쩌면 적절한 객체 인스턴스화를 할 수 있습니다. 변수가 설정된 것으로 감지 되었습니까? – XapaJIaMnu
@XapaJIaMnu'T()'는 디폴트의 초기화 타입을 사용합니다 (그래서 기본 내장, 클래스의 경우 T :: T()). 그래서 int()는'0'을 반환합니다. – xinaiz