2013-02-27 2 views
-1

A A의 의미는 g입니까? 행동이란 무엇입니까? class A을 초기화합니까? 누군가 설명 할 수 있을까요? 귀중한 시간을 가져 주셔서 감사합니다!이 동작은 무엇이라고합니까? 여기에 클래스 A를 초기화합니까?

#include<iostream> 
    using namespace std; 

    class A { 
     public: 
    }; 

    void g() 
    { 
     A A; 

//if I declare 'A A;' and 'A a1' together here, then I could get an error "[Error] expected ';' before 'a1' " 
    } 

    main(){ 
     A a2; 
    } 
+1

'A a1' 대신'A a1;을 사용하면 어떻게 될까요? –

+0

같은 오류 ...! – sree

+0

@sree'A a'는 오류가 없습니다. –

답변

4

당신은 이름이 A는 또한 유형 A의 변수를 선언한다.

해당 선언 다음에 범위 끝까지 정규화되지 않은 이름 A은 형식이 아닌 변수를 참조합니다. 따라서 A a1; 선언은 유효하지 않습니다. 형식이 전역 네임 스페이스에 있으므로 변수 A 선언 후에도 해당 형식을 ::A으로 참조 할 수 있습니다.

+0

RE : "A 형의 변수를 선언하고 있습니다. 이름도 A입니다. ** 질문 : ** 실제 사용이 가능한 상황이 있습니까? 아니면 일반적으로 이것은 나쁜 것으로 간주됩니까? – DavidRR

+0

@DavidRR : 왜 그렇게하고 싶은지는 생각할 수 없으며, 혼동의 범위를 줄이려면하지 않는 것이 좋습니다. 개인적으로 유형에 대해 다른 대문자 규칙을 사용합니다. 그리고 변수들 때문에 상황이 결코 일어나지 않을 것입니다. –

+0

동의합니다. 다른 언어로도 이것을 수행 한 이유를 생각할 수 없기 때문에이 조언이 C++에만 고유하다고 생각하지 않습니다. – DavidRR

관련 문제