2011-01-22 26 views
1

このような関数の前に~を使用すると、~func();とはどういう意味ですか?このシンボルはC++で何を意味しますか? "〜"

ありがとうございました。

+3

式(関数を呼び出す)の前、または関数(メソッド)の宣言の前に? – delnan

+0

返された値の補数にもなる可能性があります。 – Mehrdad

+0

@Mehrdad:関数宣言ではなく関数呼び出しであれば可能です。 –

答えて

15

クラス定義の一部であれば、そのクラスのデストラクタです。ただし、関数名はクラス名(それ以外の場合は構文エラーです)。

class stuff { 
    stuff(); // constructor for stuff 
    ~stuff(); // destructor for stuff 
}; 

これはビット単位の演算子でもあります。すなわち、この文脈において

int x = ~func(); 

、それは、おそらく、整数型を返すfunc()からの戻り値を取るすべてのビットを反転し、xに結果を格納します。

func()は、そのクラスで定義されoperator~を持つオブジェクトを返した場合、それはそれは、クラスのデストラクタまたは構造体

4

関数宣言を指していると仮定すると、オブジェクトが破棄されたときに自動的に実行される関数destructorを示します。デストラクタは、通常、オブジェクトが使用するリソースを解放するために使用されます(空きメモリ、クローズファイルなど)

2

について意味するかもしれません。オブジェクトが破棄されたときに呼び出される関数。

2

デストラクタを指定するだけで何も;-)

+1

+1、私はあなたがデストラクタを大文字にしたのが好きです。 – Mehrdad

1

ビット補数演算子です。

(実際には、いや、それはおそらくデストラクタではありませんfunc ??という名前のクラスのデストラクタです。)

それはfunc()から返される整数を受け取り、それをビット単位は、補完;つまり、すべてのビットを反転します。

+3

私は関数の名前にあまり意味を付けません。それはクラスの名前に取って代わることができ、その意義はポスターによって認識されませんでした。 –

+0

はい、 "〜func()"は、 "Destructor"となるサンプルに基づいており、命名するのが正しいです。デストラクタと考えるには、より合理的な名前を付けてください。ありがとう。 – Simplicity

1

〜Fooの場合、Fooはクラスであり、デストラクタです。

他の場合に使用される場合は、ビット単位の否定演算子です。 1から0に設定されたすべてのビットを反転し、その逆も同様です。

関連する問題