新聞中心
本文操作環(huán)境:Windows7系統(tǒng),php7.4版,Dell G3電腦。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東安免費(fèi)建站歡迎大家使用!
php與c++不同之處有哪些?
區(qū)別:
一個(gè)有protected成員變量(假設(shè)為i)的類型Base,他的子類Derived直接繼承自Base,同時(shí)Derived有一個(gè)成員函數(shù)func,他的參數(shù)是Base類型的,這個(gè)函數(shù)可以訪問(wèn)Base對(duì)象的protecte的成員嗎?在C++中不可以,而在PHP中可以。
關(guān)于重載:
PHP中不支持C++中的重載,重新定義個(gè)函數(shù)(不管是參數(shù)相同還是不同,都會(huì)導(dǎo)致重復(fù)定義錯(cuò)誤)。PHP有自己的重載方法,而且比C++中的更廣泛,他不僅可以重載函數(shù)(通過(guò)使用__call()方法),還可以重載成員變量(通過(guò)使用__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ù)來(lái)表明這個(gè)類是抽象類,不能單獨(dú)被實(shí)例化。而PHP中不僅可以使用函數(shù)的修飾符abstract(另外class前也必須標(biāo)明abstract)來(lái)標(biāo)明這個(gè)意思,也可以只使用abstract修飾符修飾class更直接的表明他是抽象類。另外, C++中的pure virtual函數(shù)不受訪問(wèn)類型的限制,不管是什么訪問(wèn)類型,都會(huì)被看作是public;而php中的abstract函數(shù)不能被聲明成private,僅此而已。
多態(tài)
因?yàn)镻HP是弱類型語(yǔ)言,所以他的多態(tài)性到處都有體現(xiàn),導(dǎo)致他的多態(tài)性不像C++中那么明顯。比如,在PHP中基類的函數(shù)可以看作全是virtual的,因此它不需要加任何修飾符,子類中和基類同名的函數(shù)都會(huì)被動(dòng)態(tài)調(diào)用,而C++不一樣,如果基類中的這個(gè)函數(shù)沒(méi)有加virtual修飾符,子類中的那個(gè)同名函數(shù)就不會(huì)被動(dòng)態(tài)調(diào)用,只能靜態(tài)調(diào)用了。
操作符重載
PHP中不存在,而C++存在。重點(diǎn)在==操作符,在PHP中他可以運(yùn)用在任何類型上,即使這個(gè)類型沒(méi)有(像C++中一樣)寫自己的==重載函數(shù)。PHP中對(duì)于對(duì)象的比較,==表示兩個(gè)對(duì)象的屬性和值都一樣,而且類型也一樣;PHP也存在一個(gè)===操作符,表示他們引用了同一個(gè)對(duì)象,這跟java中很像吧。
final關(guān)鍵字
PHP中存在這個(gè)關(guān)鍵字,表示這個(gè)函數(shù)不能被重寫(如果他用來(lái)修飾函數(shù)),或者類不能被繼承(如果用類修飾class)。而C++中沒(méi)有這個(gè)關(guān)鍵字,也無(wú)法模擬出那個(gè)效果。
對(duì)象賦值和拷貝
C++中的拷貝或者賦值大致有這三種方式。
一種是指針的賦值,即p1 = &obj,相當(dāng)于PHP和java中的賦值操作;
另一種是memberwise assignment,也就是在obj1 = obj2時(shí)發(fā)生的事情,默認(rèn)情況下執(zhí)行淺度拷貝,和PHP中clone的效果一樣。他可以通過(guò)重載賦值拷貝操作來(lái)執(zhí)行你的深度拷貝或者其他自定義的拷貝,這就相當(dāng)于PHP中的__clone()成員函數(shù);
第三種是memberwise initialization,也就是在參數(shù)傳遞時(shí),傳遞返回值時(shí)或者包含對(duì)象的容器初始化的時(shí)候自動(dòng)運(yùn)行的,你可以通過(guò)自己定義拷貝構(gòu)造函數(shù)來(lái)控制它的效果。
拷貝構(gòu)造函數(shù)在PHP中幾乎用不到,因?yàn)樗膫鬟f是完全按引用傳遞,而不是對(duì)象的直接拷貝。
網(wǎng)頁(yè)標(biāo)題:php與c++不同之處有哪些
分享路徑:http://www.dlmjj.cn/article/ccicdcp.html


咨詢
建站咨詢
