每日一問5 什麼是型別安全?
阿新 • • 發佈:2020-11-30
我們知道任何型別的資料在計算機的底層都是0和1所表示,而不同的讀取方式,給相同的位元組帶來了不同的解釋方式,或解釋為int型的數字,又或者解釋為string的字串。就比如C/C++語言中的union聯合體資料結構,就是通過對同一段記憶體的資料按照不同的方式來解釋從而獲得不同型別的資料。而型別安全就是限制了對於同一段記憶體的解釋方式。
C++是不具有型別安全的,因為在C++中,沒有限制對於記憶體的解釋方式,如int型的資料1,同時也可以解讀為bool型的資料true。這裡要和正常的型別轉換做出區分,如java就是門型別安全的語言,但它同時也支援型別轉換。
//C++ 可以正常輸出 int a = 1; if(a) cout<<"型別安全"; //java 報錯 int a = 1; if(a) System.out.println("型別安全");
再貼一些網上關於型別安全的說法:
1.swift中關於型別安全的解釋
Swift is a type-safe language, which means the language helps you to be clear about the types of values your code can work with.
2.型別安全很大程度上可以等價於記憶體安全,型別安全的程式碼不會試圖訪問自己沒被授權的記憶體區域。“型別安全”常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制;有的時候也用“型別安全”形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之間,沒有必然聯絡。好的程式設計師可以使用型別不那麼安全的語言寫出型別相當安全的程式,相反的,差一點兒的程式設計師可能使用型別相當安全的語言寫出型別不太安全的程式。絕對型別安全的程式語言暫時還沒有。
新人學習過程難免有錯,希望大家指正,謝謝~