回覆列表
  • 1 # LOL唐頭大

    任何情況,都不能手動呼叫解構函式的。

    如果是棧物件,自動釋放,不需要呼叫。

    如果是堆物件,delete它的時候,就呼叫了解構函式。

    int main() {

    std::string s;

    //s.~string(); //error: identifier "string" in object destruction expression does not name a type

    //上面這句程式碼 實際是為了呼叫 string的某個函式。換成其他函式也可以。看下面修改的程式碼

    return 0;

    }

    //修改之後

    #include<stdio.h>

    #include<string>

    int main() {

    std::string s = "123"; //因為這裡前面加了 std:: 所以前面使用和不使用using std::string是沒有區別的

    printf("string length = %u\", s.size());

    return 0;

    }

    因為C++的類有很多很多,為了歸類管理,就加入了名稱空間 ,比如std就是。

    std下面有個類叫 string

    比如說假設 abc名稱空間下也有個類叫string。那麼編譯的時候,編譯器就不知道你用的哪一個類。就需要用名稱空間限制一下,就好比作業系統的資料夾一樣。

    比如C:/aaa.txt。如果直接用aaa.txt 系統就不知道你用的哪一個檔案。

    而使用using std::string 就類似在程式開始就告訴程式,我的當前目錄在C盤,那麼後面讀取檔案都再C盤下(舉個例子),實際含義是告訴編譯器,後面出現的string 都指的是std::string

  • 中秋節和大豐收的關聯?
  • 怎麼檢視蘋果7手機真偽?