私はC++で文字列関数を実装しようとしているので、Pythonのように動作します。オーバーロード演算子 `[]`と ':'
たとえば、Pythonであなたのようなコーディングすることができ、
str = "filename.ext"
bits_0 = str[1:3]
bits_1 = str[-1:]
ことの一つは、オーバーロードするには、オペレータ[]
ですが、どのようにこの場合のオペレータ:
をオーバーロードするために?
私はC++で文字列関数を実装しようとしているので、Pythonのように動作します。オーバーロード演算子 `[]`と ':'
たとえば、Pythonであなたのようなコーディングすることができ、
str = "filename.ext"
bits_0 = str[1:3]
bits_1 = str[-1:]
ことの一つは、オーバーロードするには、オペレータ[]
ですが、どのようにこの場合のオペレータ:
をオーバーロードするために?
:
は、not an operator in C++です。これは、スコープ解決演算子::
または3進演算子?:
の一部に過ぎません。オペレータではないので、オーバーロードすることはできません。
編集注:Pythonを使用する場合は、Pythonを使用してください。
私は一般にあなたの編集上の注意に同意しますが、基本的には他の言語で便利な構文的砂糖をエミュレートすることに間違いはありません。特にアレイスライス演算子を持つことは良いでしょう。 –
C++にはoperator:
がありません。したがって、あなたはそれを「過負荷」にすることはできません。
":"であるコロンは演算子ではありません。 C++のコロン(:)は、本質的に初期化リストと呼ばれるものを呼び出す演算子です。コンストラクタの本体が実行される前に、メンバ変数を初期化する基底クラスのコンストラクタ
II)を呼び出す)
I:初期化リストは、次のようなもののために使用することができます。
コロンが使用されていると思われる例の1つは、クラスアクセス指定子を識別することです。例:
プライベート:
int x;
int y;
演算子をオーバーロードすることはできますが、構文を変更することはできません。 '[:]'はC++で構文的に有効な構文ではないので、Python構文を正確に複製することはできません。 – Cameron