php與c 不同之處有:1、PHP是在伺服器端執行的腳本語言,而C 是C語言的繼承;2、PHP中不支援C 中的重載;3、關於abstract和interface的使用不同;4、PHP是弱類型語言,所以PHP的多態性不像C 明顯等等。
本文操作環境:Windows7系統,PHP7.4版,Dell G3電腦。
php與c 有哪些不同之處
一個有protected成員變數(假設為i )的類型Base,他的子類別Derived直接繼承自Base,同時Derived有一個成員函數func,他的參數是Base類型的,這個函數可以存取Base物件的protecte的成員嗎?在C 中不可以,而在PHP中可以。
PHP中不支援C 中的重載,重新定義個函數(不管是參數相同或不同,都會導致重複定義錯誤)。 PHP有自己的重載方法,而且比C 中的更廣泛,他不僅可以重載函數(透過使用__call()方法),還可以重載成員變數(透過使用__get()和__set() )。而C 中只能對函數進行重載,而且重載的方法只有:不同的參數類型,不同的函數修飾符(const)。
#PHP中有這兩個修飾符,因為PHP不支援對一個普通類別的多繼承,因此interface用於實作多繼承。 Abstract類別在C 中也存在,只是實作方式不一樣,C 中使用pure virtual函數來表示這個類別是抽象類,不能單獨被實例化。而PHP中不只可以使用函數的修飾符abstract(另外class前也必須標明abstract)來標明這個意思,也可以只用abstract修飾符修飾class更直接的表示他是抽象類別。另外, C 中的pure virtual函數不受存取類型的限制,不管是什麼存取類型,都會被看作是public;而php中的abstract函數不能被宣告成private,僅此而已。
因為PHP是弱型別語言,所以他的多態性到處都有體現,導致他的多態性不像C 中那麼明顯。例如,在PHP中基底類別的函數可以看作全是virtual的,因此它不需要加任何修飾符,子類別中和基底類別同名的函數都會被動態調用,而C 不一樣,如果基底類別中的這個函數沒有加virtual修飾符,子類別中的那個同名函數就不會被動態調用,只能靜態調用了。
PHP中不存在,而C 存在。重點在==操作符,在PHP中他可以運用在任何類型上,即使這個類型沒有(像C 一樣)寫自己的==重載函數。 PHP中對於對象的比較,==表示兩個對象的屬性和值都一樣,而且類型也一樣;PHP也存在一個===操作符,表示他們引用了同一個對象,這跟java很像吧。
PHP中存在這個關鍵字,表示這個函數不能被重寫(如果他用來修飾函數),或類別不能被繼承(如果用類別修飾class)。而C 中沒有這個關鍵字,也無法模擬出那個效果。
C 中的拷貝或賦值大致有這三種方式。
一種是指標的賦值,即p1 = &obj,相當於PHP和java中的賦值操作;
另一種是memberwise assignment,也就是在obj1 = obj2時發生的事情,預設執行淺度拷貝,和PHP中clone的效果一樣。他可以透過重載賦值拷貝操作來執行你的深度拷貝或其他自訂的拷貝,這就相當於PHP中的__clone()成員函數;
第三種是memberwise initialization,也就是在參數傳遞時,傳遞回傳值時或包含物件的容器初始化的時候自動執行的,你可以透過自己定義拷貝建構函數來控制它的效果。
拷貝建構函數在PHP中幾乎用不到,因為他的傳遞是完全按引用傳遞,而不是物件的直接拷貝。
PHP簡介:PHP(PHP: Hypertext Preprocessor)即“超文本預處理器”,是在伺服器端執行的腳本語言,尤其適用於Web開發並可嵌入HTML中。 PHP語法學習了C語言,吸收Java和Perl多個語言的特色發展出自己的特色語法,並根據它們的長項持續改進提升自己,例如java的面向對象編程,該語言當初創建的主要目標是讓開發人員快速編寫出優質的web網站。 [1-2] PHP同時支援物件導向與流程導向的開發,使用上非常靈活。 C 簡介:###C 是C語言的繼承,它既可以進行C語言的過程化程式設計,又可以進行以抽象資料類型為特徵的基於物件的程式設計,還可以進行以繼承和多態為特徵的面向對象的程式設計。 C 擅長物件導向程式設計的同時,也可以進行以過程為基礎的程式設計,因而C 就適應的問題規模而論,大小由之。
C 不僅擁有電腦高效運作的實用性特徵,同時也致力於提升大規模程式的程式設計品質與程式設計語言的問題描述能力。
推薦學習:《PHP影片教學》
以上是php與c++不同之處有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!