您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)php與c++不同之處是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
php與c++不同之處有:1、PHP是在服務(wù)器端執(zhí)行的腳本語言,而C++是C語言的繼承;2、PHP中不支持C++中的重載;3、關(guān)于abstract和interface的使用不同;4、PHP是弱類型語言,所以PHP的多態(tài)性不像C++明顯等等。
本文操作環(huán)境:Windows7系統(tǒng),PHP7.4版,Dell G3電腦。
區(qū)別:
一個(gè)有protected成員變量(假設(shè)為i)的類型Base,他的子類Derived直接繼承自Base,同時(shí)Derived有一個(gè)成員函數(shù)func,他的參數(shù)是Base類型的,這個(gè)函數(shù)可以訪問Base對(duì)象的protecte的成員嗎?在C++中不可以,而在PHP中可以。
關(guān)于重載:
PHP中不支持C++中的重載,重新定義個(gè)函數(shù)(不管是參數(shù)相同還是不同,都會(huì)導(dǎo)致重復(fù)定義錯(cuò)誤)。PHP有自己的重載方法,而且比C++中的更廣泛,他不僅可以重載函數(shù)(通過使用__call()方法),還可以重載成員變量(通過使用__get()和__set())。而C++中只能對(duì)函數(shù)進(jìn)行重載,而且重載的方法只有:不同的參數(shù)類型,不同的函數(shù)修飾符(const)。
關(guān)于abstract和interface
PHP中有這兩個(gè)修飾符,因?yàn)镻HP不支持對(duì)一個(gè)普通類的多繼承,因此interface用于實(shí)現(xiàn)多繼承。Abstract類在C++中也存在,只是實(shí)現(xiàn)方式不一樣,C++中使用pure virtual函數(shù)來表明這個(gè)類是抽象類,不能單獨(dú)被實(shí)例化。而PHP中不僅可以使用函數(shù)的修飾符abstract(另外class前也必須標(biāo)明abstract)來標(biāo)明這個(gè)意思,也可以只使用abstract修飾符修飾class更直接的表明他是抽象類。另外, C++中的pure virtual函數(shù)不受訪問類型的限制,不管是什么訪問類型,都會(huì)被看作是public;而php中的abstract函數(shù)不能被聲明成private,僅此而已。
多態(tài)
因?yàn)镻HP是弱類型語言,所以他的多態(tài)性到處都有體現(xiàn),導(dǎo)致他的多態(tài)性不像C++中那么明顯。比如,在PHP中基類的函數(shù)可以看作全是virtual的,因此它不需要加任何修飾符,子類中和基類同名的函數(shù)都會(huì)被動(dòng)態(tài)調(diào)用,而C++不一樣,如果基類中的這個(gè)函數(shù)沒有加virtual修飾符,子類中的那個(gè)同名函數(shù)就不會(huì)被動(dòng)態(tài)調(diào)用,只能靜態(tài)調(diào)用了。
操作符重載
PHP中不存在,而C++存在。重點(diǎn)在==操作符,在PHP中他可以運(yùn)用在任何類型上,即使這個(gè)類型沒有(像C++中一樣)寫自己的==重載函數(shù)。PHP中對(duì)于對(duì)象的比較,==表示兩個(gè)對(duì)象的屬性和值都一樣,而且類型也一樣;PHP也存在一個(gè)===操作符,表示他們引用了同一個(gè)對(duì)象,這跟java中很像吧。
final關(guān)鍵字
PHP中存在這個(gè)關(guān)鍵字,表示這個(gè)函數(shù)不能被重寫(如果他用來修飾函數(shù)),或者類不能被繼承(如果用類修飾class)。而C++中沒有這個(gè)關(guān)鍵字,也無法模擬出那個(gè)效果。
對(duì)象賦值和拷貝
C++中的拷貝或者賦值大致有這三種方式。
一種是指針的賦值,即p1 = &obj,相當(dāng)于PHP和java中的賦值操作;
另一種是memberwise assignment,也就是在obj1 = obj2時(shí)發(fā)生的事情,默認(rèn)情況下執(zhí)行淺度拷貝,和PHP中clone的效果一樣。他可以通過重載賦值拷貝操作來執(zhí)行你的深度拷貝或者其他自定義的拷貝,這就相當(dāng)于PHP中的__clone()成員函數(shù);
第三種是memberwise initialization,也就是在參數(shù)傳遞時(shí),傳遞返回值時(shí)或者包含對(duì)象的容器初始化的時(shí)候自動(dòng)運(yùn)行的,你可以通過自己定義拷貝構(gòu)造函數(shù)來控制它的效果。
拷貝構(gòu)造函數(shù)在PHP中幾乎用不到,因?yàn)樗膫鬟f是完全按引用傳遞,而不是對(duì)象的直接拷貝。
PHP簡介:
PHP(PHP: Hypertext Preprocessor)即“超文本預(yù)處理器”,是在服務(wù)器端執(zhí)行的腳本語言,尤其適用于Web開發(fā)并可嵌入HTML中。PHP語法學(xué)習(xí)了C語言,吸納Java和Perl多個(gè)語言的特色發(fā)展出自己的特色語法,并根據(jù)它們的長項(xiàng)持續(xù)改進(jìn)提升自己,例如java的面向?qū)ο缶幊?,該語言當(dāng)初創(chuàng)建的主要目標(biāo)是讓開發(fā)人員快速編寫出優(yōu)質(zhì)的web網(wǎng)站。 [1-2] PHP同時(shí)支持面向?qū)ο蠛兔嫦蜻^程的開發(fā),使用上非常靈活。
C++簡介:
C++是C語言的繼承,它既可以進(jìn)行C語言的過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。C++擅長面向?qū)ο蟪绦蛟O(shè)計(jì)的同時(shí),還可以進(jìn)行基于過程的程序設(shè)計(jì),因而C++就適應(yīng)的問題規(guī)模而論,大小由之。
C++不僅擁有計(jì)算機(jī)高效運(yùn)行的實(shí)用性特征,同時(shí)還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計(jì)語言的問題描述能力。
關(guān)于“php與c++不同之處是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。