2010-12-09 5 views
0

가능한 중복 :
Why are some operators in C++ only allowed to be overloaded as member functions?왜 연산자() [] -> =는 비 정적 멤버 여야합니까?

왜 연산자()] -> = 여야 비 정적 부재? 왜 친구가 될 수 없습니까?

+0

정적 멤버가 될 수있는 연산자가 있습니까? –

+0

@jleedev : 예, +, -, /, * ... 당신이 그것을 얻습니다. –

+0

@jleedev : 정의되지 않은 클래스의 멤버가 아닌 삽입 연산자와 추출 연산자를 만드는 것이 일반적입니다. 다른 운영자도 동일한 작업을 수행 할 수 있습니다. – cHao

답변

2

클래스 인스턴스에서 호출해야하기 때문에. 예를 들어 -> 연산자를 봅니다. 클래스 자체에 대한 포인터를 얻는 방법을 어떻게 제안하겠습니까? 그것은별로 의미가 없습니다.

+0

비회원 기능은 어떻습니까? – Abyx

+0

'->'는 포인터가 호출 된 클래스에 대한 포인터를 반환해야한다고 말하지 않습니다. 포인터를 반환 할 수 있습니다. "포인터가 힙을 할당 메모리를 가리킨다"는 것은 무엇을 의미합니까? 포인터는 정적으로 할당 된 메모리를 가리킬 수도 있습니다. 내 의견에 말했듯이 그것은 단지 설계 결정 일뿐입니다. – nils

1

정적이어서는 안됩니다. 간단한 디자인 결정. 아마도 C++에는 클래스 객체의 개념이 없기 때문일 것입니다.

+0

C++에 클래스 객체의 개념이 없다는 것은 무엇을 의미합니까? 그것은 클래스를 가지고 있고, 오브젝트를 가지고 있으며, 당신은 다른 클래스 안에 오브젝트를 넣을 수 있습니다. 여기에 뭔가 빠졌습니까? –

+2

클래스는 객체 자체가 아닙니다. 그들은 실제로 존재하지 않습니다. 수업을 무언가에 할당하십시오. – nils

관련 문제