이 주제에 대한 재교육이 필요하지만 온라인에서 답변을 찾을 수는 없습니다.C++ - 클래스가있는 네임 스페이스
당신이 클래스를 호출 한 경우 Dog
class Dog
{
public:
void Dog::woof()
{
return;
}
};
머스트
Dog::
와Dog
시작 내부의 모든 단일 기능? 그것이 내가 항상 해왔 던 방법이지만, 나는 묻고 싶다. 어떤 경우에도 그렇지 않다면 상황?Dog::
을 넣지 않으면 Java의 정적 메서드처럼 사용할 수 있다는 의미입니까? 전의. 대신myDogObj.woof();
의
Dog.woof();
우리가Dog
네임 스페이스없는 경우에도 불구하고,::
연산자를 사용Woof
이Dog
의 네임 스페이스에 있음을 의미한다는 사실을합니까? 그것이 사실이라면 클래스가 자동으로 네임 스페이스로 자신을 생성한다는 것을 의미합니까?왜 우리가
class Dog
의 내부에 있다는 바로 그 사실은 본질적으로 이미한다고하면서Dog
에 속하는 방법 있다는 ++ C에게Dog::
을 배치해야합니까? 그렇게 중복되지 않습니까?어쨌든
Dog::woof
이 네임 스페이스 또는 중첩 네임 스페이스 내부에서 선언 될 수 있습니까? 전의.Park::Trail::Dog::woof() { return; }
당신은해야 할 것이다 :
class Dog
{
public:
namespace Park
{
namespace Trail
{
void Dog::woof()
{
return;
}
}
}
};
마지막 예제는 말도 안되며, 클래스의 * 내부에 네임 스페이스를 가질 수 없습니다. – molbdnilo
클래스에서'woof'를 선언 한 다음 클래스 외부에서 정의 할 수 있지만 그 함수 정의를 네임 스페이스 안에 넣으면 어떨까요? 전의. '네임 스페이스 Park {void Dog :: woof() {return; }}' – Hatefiend
'Dog' 선언이'Park' 네임 스페이스 안에 있지 않으면 작동하지 않습니다. 재스는 그것을 시험해 본다. – Ceros