2011-01-22 108 views
1

如果我們在使用這樣的函數之前使用~:這是什麼意思?這個符號在C++中的含義是什麼? 「〜」

謝謝。

+3

在表達式(恰好調用函數)之前或在聲明函數(方法)之前? – delnan 2011-01-22 21:17:45

+0

它*可以*也可以是返回值的補碼... – Mehrdad 2011-01-22 21:18:10

+0

@Mehrdad:我想如果它是一個函數調用而不是函數聲明的話。 – 2011-01-22 21:20:28

回答

15

如果它是類定義的一部分,它是該類的析構函數,前提是函數名與類名(否則它將是一個語法錯誤)。

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

它也可能是位運算符而不是運算符。即

int x = ~func(); 

在這種情況下,這將需要從func()的返回值,這大概是返回一個整體式,翻轉所有的位和將結果存儲在x

如果func()返回其在其類中定義operator~一個對象,那麼它可能意味着任何事情;-)

4

假設你指的是一個函數聲明,它表示一個destructor--一個當對象被銷燬時自動運行的函數。析構函數通常用於釋放對象使用的任何資源(空閒內存,關閉文件等)

2

它指定一個類或結構

2

它的析構函數的析構函數。一個函數保證在對象被銷燬時被調用。

1

這是按位互補運算符。

(其實沒有,這可能不是一個析構函數命名func ??類的析構函數)。

它從func()返回的整數和按位具有互補性;也就是說,它翻轉所有的位。

1

如果是〜Foo,其中Foo是一個類,它是一個析構函數。

如果在其他情況下使用它,則它是按位否定運算符。它將所有設置爲1的位翻轉爲0,反之亦然。