C語(yǔ)言是不支持函數(shù)重載的,但是C++是可以的,這是C++對(duì)C的一個(gè)重要擴(kuò)展。
創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供長(zhǎng)治企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為長(zhǎng)治眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
c++和c語(yǔ)言的區(qū)別:
1、關(guān)鍵字
藍(lán)色標(biāo)注為C語(yǔ)言關(guān)鍵字,C++繼承了C語(yǔ)言的所有關(guān)鍵字,以下紅色標(biāo)注為C++中含有但C語(yǔ)言沒(méi)有的關(guān)鍵字(根據(jù)c++98中提出C++包含63個(gè)關(guān)鍵字)。
2、源文件區(qū)別
C語(yǔ)言文件后綴為c,c++原文件名后綴為.cpp。
如果在創(chuàng)建源文件時(shí)什么都不給,默認(rèn)是.cpp。
3、返回值不同
C語(yǔ)言中,如果一個(gè)函數(shù)沒(méi)有指定返回值類(lèi)型,默認(rèn)為int類(lèi)型,并返回一個(gè)隨機(jī)數(shù),一般為0XCCCCCCCC。
在C++中,如果函數(shù)沒(méi)有返回值則必須指定為void型,否則編譯不能通過(guò)。
4、參數(shù)列表
在C語(yǔ)言中,函數(shù)沒(méi)有指定的參數(shù)列表時(shí),默認(rèn)可接收任意多個(gè)參數(shù)。
在C++中,有嚴(yán)格的參數(shù)類(lèi)型檢測(cè),沒(méi)有參數(shù)列表的函數(shù),默認(rèn)為void,不接收任何參數(shù)。
5、C++支持函數(shù)重載,C語(yǔ)言不支持
在實(shí)際開(kāi)發(fā)中,有時(shí)候我們需要實(shí)現(xiàn)幾個(gè)功能類(lèi)似的函數(shù),只是有些細(xì)節(jié)不同。
例如希望交換兩個(gè)變量的值,這兩個(gè)變量有多種類(lèi)型,可以是int、float、char、bool等,我們需要通過(guò)參數(shù)把變量的地址傳入函數(shù)內(nèi)部。
在C語(yǔ)言中,程序員往往需要分別設(shè)計(jì)出三個(gè)不同名的函數(shù),其函數(shù)原型與下面類(lèi)似:
void swap1(int*a,int*b);//交換int變量的值。
void swap2(float*a,float*b);//交換float變量的值。
void swap3(char*a,char*b);//交換char變量的值。
void swap4(bool*a,bool*b);//交換bool變量的值。
但在C++中,這完全沒(méi)有必要。C++允許多個(gè)函數(shù)擁有相同的名字,只要它們的參數(shù)列表不同就可以,這就是函數(shù)的重載(Function Overloading)。借助重載,一個(gè)函數(shù)名可以有多種用途。
6、指針和引用
C語(yǔ)言中函數(shù)傳參方式有兩種:傳值和傳址。
以傳值方式,在函數(shù)調(diào)用過(guò)程中會(huì)生成一份臨時(shí)變量用形參代替,最終把實(shí)參的值傳遞給新分配的臨時(shí)形參。
它的優(yōu)點(diǎn)是避免了函數(shù)調(diào)用的副作用,卻無(wú)法改變形參的值。如果要改變實(shí)參的值,只能通過(guò)指針傳遞。
指針可以解決問(wèn)題,但是不安全,因此在C++中引入了引用。
7、命名空間
在C++中,變量、函數(shù)和類(lèi)都是大量存在的,這些變量、函數(shù)和類(lèi)的名稱(chēng)將都存在于全局命名空間中,會(huì)導(dǎo)致很多沖突,使用命名空間的目的是對(duì)標(biāo)識(shí)符的名稱(chēng)進(jìn)行本地化,以避免命名沖突或者名字污染,namespace關(guān)鍵字的出現(xiàn)就是解決這種問(wèn)題。而C語(yǔ)言中沒(méi)有。
8、輸入與輸出
cout代表c++的輸出流。
cin代表c++的輸入流。
它們都是在頭文件“iostream”中定義。
“cout”必須與””一起使用,“”起到插入的作用。
在一條語(yǔ)句中可以多次使用“”輸出多個(gè)數(shù)據(jù)。
標(biāo)準(zhǔn)C, 不支持函數(shù)重載。
函數(shù)重載是C++的概念。 不光是類(lèi)的成員函數(shù), 一般函數(shù)以及模板函數(shù)都是可以重載的。