2011-09-09 18 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

operator []が定義されているクラスからサブクラス化しない限り、native []演算子はありません。あなたが – Macondo2Seattle

+0

の場合は、[]が定義されているものをサブクラス化する場合にのみ問題になります。例えば。 std :: vector。その場合、[]のデフォルト動作を変更したくないかもしれません。 C++はたくさんのことをすることができるからといって、あなたがそれらをするべきではありません:) – Macondo2Seattle

関連する問題