2011-09-09 7 views
-4

어떻게 C++에서() 및 [] 연산자를 오버로드합니까? 몇 가지 코드로 정당화하십시오. 프로그래밍 언어의 무결성에 영향을 미치지 않습니까? 연산자 오버로딩은 사용자 정의 형식으로 만 수행 할 수 있기 때문에 단순히 그것은 프로그래밍 언어의 무결성에 영향을 미칠 수C++에서 오버로드(), [] 연산자

class Test { 
    const int size = 128; 
    int data[size]; 
public: 
    Test() { 
    // allocate memory for data, etc. 
    } 

    int& operator[](int index) { 
    return data[index]; 
    } 
}; 
+0

어떤 언어로 제공됩니까? OOP와 C++는 동의어가 아닙니다. – Yuji

+0

어떤 언어로 제공 되나요? 나는 C++에서 –

+0

을 유감스럽게 생각합니다. C++ 언어 –

답변

1

다음은 예입니다. C++에서 기본 제공 유형에 대한 연산자를 오버로드하는 것은 불가능합니다. []의 동작은 데이터 포인터 (배열도 포함)로 변경할 수 없습니다. 함수 포인터를 사용하여 ()의 동작을 변경할 수 없습니다. 즉, C++의 핵심 언어 기능을 오버로드 할 수 없습니다.

+0

개체의 배열이 있다면? 네이티브 [] 연산에 영향을 미치지 않습니까? –

+0

연산자 []가 정의 된 클래스에서 서브 클래 싱하지 않는 한 native [] 연산자가 없습니다. 만약 당신이 – Macondo2Seattle

+0

당신이 [] 정의 된 것을 서브 클래 싱하는 경우에만 문제가됩니다. 예 : std :: vector. 이 경우 []의 기본 동작을 변경하지 않으려 고합니다. C++은 많은 일을 할 수있게 해주기 때문에 그렇게하지 않아도됩니다. :) – Macondo2Seattle