2011-09-09 60 views
-4

如何重載C++中的()和[]運算符?證明一些代碼。 它不會影響編程語言的完整性嗎?在C++中重載(),[]運算符

+0

哪種語言? OOP和C++不是同義詞。 – Yuji

+0

哪種語言?我猜C++ –

+0

對不起,在c + +語言 –

回答

1

下面是一個例子:

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

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

如果存在一組對象,該怎麼辦?它不會影響本機操作嗎? –

+0

除非您從具有operator []定義的類繼承,否則不存在native []運算符。如果你 – Macondo2Seattle

+0

這只是一個問題,如果你繼承了[]定義的東西。例如。的std ::向量。在這種情況下,你可能不想改變[]的默認行爲。僅僅因爲C++允許你做很多事情,並不意味着你應該做它們:) – Macondo2Seattle

2

它可以在不影響編程語言的完整性,只是因爲運算符重載只能爲用戶定義類型來進行。在C++中爲內置類型重載運算符是不可能的。你不能用數據指針(也包括數組)來改變[]的行爲。你不能用函數指針改變()的行爲。換句話說,C++的核心語言特性不能被重載。