2016-11-15 13 views
2

私はC++で文字列関数を実装しようとしているので、Pythonのように動作します。オーバーロード演算子 `[]`と ':'

たとえば、Pythonであなたのようなコーディングすることができ、

str = "filename.ext" 
bits_0 = str[1:3] 
bits_1 = str[-1:] 

ことの一つは、オーバーロードするには、オペレータ[]ですが、どのようにこの場合のオペレータ:をオーバーロードするために?

+1

演算子をオーバーロードすることはできますが、構文を変更することはできません。 '[:]'はC++で構文的に有効な構文ではないので、Python構文を正確に複製することはできません。 – Cameron

答えて

7

:は、not an operator in C++です。これは、スコープ解決演算子::または3進演算子?:の一部に過ぎません。オペレータではないので、オーバーロードすることはできません。

編集注:Pythonを使用する場合は、Pythonを使用してください。

+0

私は一般にあなたの編集上の注意に同意しますが、基本的には他の言語で便利な構文的砂糖をエミュレートすることに間違いはありません。特にアレイスライス演算子を持つことは良いでしょう。 –

4

C++にはoperator:がありません。したがって、あなたはそれを「過負荷」にすることはできません。

0

":"であるコロンは演算子ではありません。 C++のコロン(:)は、本質的に初期化リストと呼ばれるものを呼び出す演算子です。コンストラクタの本体が実行される前に、メンバ変数を初期化する基底クラスのコンストラクタ

II)を呼び出す)

I:初期化リストは、次のようなもののために使用することができます。

コロンが使用されていると思われる例の1つは、クラスアクセス指定子を識別することです。例:

プライベート:

int x;

int y;

関連する問題