? ??
目錄
一. 前言
二. 什么是C++
三. C++關(guān)鍵字初探
四. 命名空間
4.1 為什么要引入命名空間
4.2 命名空間的定義
4.3 命名空間使用
五. C++的輸入輸出
六. 缺省參數(shù)
6.1 缺省參數(shù)的概念
6.2 缺省參數(shù)的分類(lèi)
七. 函數(shù)重載?
7.1 函數(shù)重載的概念
7.2 函數(shù)重載的條件
7.3 C++支持函數(shù)重載的原因
一. 前言
? ? ? ? 舊坑未填,新坑又起。今天我們又要開(kāi)啟一個(gè)新的系列:C++深入淺出。振奮人心的C++學(xué)習(xí)終于來(lái)了在本系列中,你能感受到C++相比C語(yǔ)言特有的魅力,盡管學(xué)習(xí)的過(guò)程中可能會(huì)充滿坎坷,但風(fēng)雨之后,仰望天空,即使沒(méi)有彩虹,也會(huì)是睛空。學(xué)完C++后,你甚至可以在C++中用短短幾行代碼就搞定C語(yǔ)言幾十上百行的代碼,是不是很神奇,這還只是C++其中的一個(gè)強(qiáng)大之處哦。所以,不要恐懼,讓我們一起懷著激動(dòng)的心情打開(kāi)C++的大門(mén)吧
二. 什么是C++
????????C語(yǔ)言是結(jié)構(gòu)化和模塊化的語(yǔ)言,適合處理較小規(guī)模的程序。對(duì)于復(fù)雜的問(wèn)題,規(guī)模較大的
程序,需要高度的抽象和建模時(shí),C語(yǔ)言則不合適。為了解決軟件危機(jī), 20世紀(jì)80年代, 計(jì)算機(jī)
界提出了OOP(object oriented programming:面向?qū)ο?思想,支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言
應(yīng)運(yùn)而生。
????????1982年,Bjarne Stroustrup博士在C語(yǔ)言的基礎(chǔ)上引入并擴(kuò)充了面向?qū)ο蟮母拍?,發(fā)明了一
種新的程序語(yǔ)言。為了表達(dá)該語(yǔ)言與C語(yǔ)言的淵源關(guān)系,命名為C++。因此:C++是基于C語(yǔ)言而
產(chǎn)生的,它既可以進(jìn)行C語(yǔ)言的過(guò)程化程序設(shè)計(jì)(C++兼容C語(yǔ)言),又可以進(jìn)行以抽象數(shù)據(jù)類(lèi)型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。
三. C++關(guān)鍵字初探
? ? ? ? 在C語(yǔ)言的學(xué)習(xí)過(guò)程中,我們前前后后一共學(xué)到了32個(gè)關(guān)鍵字。而C++作為C語(yǔ)言的擴(kuò)展,一共多達(dá)63個(gè)關(guān)鍵字,如下表所示:
?注:這里稍微知道一下有這些關(guān)鍵字即可,后面學(xué)到具體應(yīng)用時(shí)再進(jìn)行細(xì)講
四. 命名空間
4.1 為什么要引入命名空間
在寫(xiě)C語(yǔ)言代碼時(shí),你是否寫(xiě)過(guò)類(lèi)似這樣的代碼:
#include<stdio.h>
#include<stdlib.h>
int rand = 0;
int main()
{
printf("%d", rand);
return 0;
}
當(dāng)你Ctrl+F5興沖沖的編譯運(yùn)行時(shí),發(fā)現(xiàn)不解情的編譯器報(bào)出了重定義的錯(cuò)誤:
由于預(yù)處理階段會(huì)將頭文件進(jìn)行展開(kāi),而在我們的stdlib.h頭文件中存在著名為rand的隨機(jī)數(shù)函數(shù),而C語(yǔ)言是不允許在相同作用域下定義多個(gè)同名符號(hào)的,因此會(huì)報(bào)出重定義的錯(cuò)誤。
#include<stdio.h> #include<stdlib.h> int rand = 0; //前面已經(jīng)將rand全局定義為函數(shù),這里又定義為全局變量,顧重定義 int main() { int rand = 0; //這里rand是局部變量,作用域不同,局部?jī)?yōu)先,因此不會(huì)報(bào)錯(cuò) rand(); //由于rand是局部?jī)?yōu)先,這里的rand是個(gè)局部變量,顧無(wú)法作為函數(shù)使用,報(bào)錯(cuò) printf("%d", rand); return 0; }
在上面的代碼中,我們無(wú)論將rand定義成全局變量還是局部變量,都無(wú)法實(shí)現(xiàn)我們想要的效果,那怎么辦呢?將rand變量的名字換一個(gè)唄,得不到就不要強(qiáng)求啦
但是在C++中,新增了命名空間來(lái)對(duì)標(biāo)識(shí)符的名稱進(jìn)行本地化,以避免命名沖突或名字污染,上面的問(wèn)題就被很好的解決了。
所以說(shuō),努力拓展提升自己,能力夠了自然也就得到了
4.2 命名空間的定義
定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對(duì){}即可。{}中的內(nèi)容即為命名空間的成員。命名空間內(nèi)的成員可以是變量,也可以是函數(shù)、類(lèi)型,甚至可以是另一個(gè)命名空間。
namespace Dream //namespace關(guān)鍵字 + 命名空間名稱
{
//命名空間內(nèi)定義變量
int a;
int b = 10;
//命名空間內(nèi)定義函數(shù)
int add(int x,int y)
{
return x + y;
}
//命名空間內(nèi)定義類(lèi)型
struct Stack
{
int* a;
int top;
int capacity;
};
//命名空間嵌套定義
namespace other
{
int a;
int b = 10;
}
}
注意:一個(gè)命名空間定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
此外, 如果我們?cè)?span style="background-color:#f9eda6;">同一工程中定義了兩個(gè)相同名稱的命名空間(無(wú)論在哪個(gè)文件),編譯器最終會(huì)合并到同一個(gè)命名空間中
//test1.cpp
namespace Dream
{
int a = 5;
int b = 10;
}
//test2.cpp
namespace Dream
{
int Add(int x, int y)
{
return x + y;
}
}
//上面兩個(gè)同名命名空間編譯器最終會(huì)進(jìn)行合并,結(jié)果如下:
namespace Dream
{
int a = 5;
int b = 10;
int Add(int x, int y)
{
return x + y;
}
}
4.3 命名空間使用
那么,定義了命名空間后,我們要如何使用它呢?如果我們直接對(duì)命名空間的成員進(jìn)行訪問(wèn),編譯器會(huì)報(bào)錯(cuò):
#include<stdio.h>
namespace Dream
{
int b = 10;
}
int main()
{
printf("%d", b); //報(bào)錯(cuò),b只在Dream作用域內(nèi)有效
return 0;
}
?我們一般有一下三種使用方法:
1、變量名前加命名空間名稱及作用域限定符
namespace Dream
{
int b = 10;
namespace other
{
int b = 5;
}
}
int main()
{
printf("%d", Dream::b); //表示Dream命名空間內(nèi)的b,即輸出10
printf("%d", Dream::other::b); //表示Dream命名空間內(nèi)的other命名空間內(nèi)的b,即輸出5
return 0;
}
分析:兩個(gè)變量b雖然名稱相同,但被劃分到了兩個(gè)命名空間中,作用域不同,因此不會(huì)出現(xiàn)重定義的問(wèn)題。并且,通過(guò)在前面加上對(duì)應(yīng)的命名空間我們可以實(shí)現(xiàn)對(duì)這兩個(gè)變量b的訪問(wèn)。
2、使用using將命名空間中某個(gè)成員展開(kāi)
? ? ? 但是如果命名空間中的某個(gè)變量需要在程序中頻繁的進(jìn)行使用,每次都要在前面加上命名空間未免顯得過(guò)于繁瑣,因此C++還允許我們使用using關(guān)鍵字將命名空間中某個(gè)成員展開(kāi)
namespace Dream
{
int a = 5;
int b = 10;
}
using Dream::a;
//int a = 10; //由于上方將變量a展開(kāi),a的作用域相當(dāng)于全局,這里如果再定義a會(huì)重定義
int main()
{
a += 10; //引入了a,顧不需要再前面加上命名空間
printf("%d\n", a);
printf("%d", Dream::b); //而變量b沒(méi)有展開(kāi),故需加上命名空間
return 0;
}
3、使用using naespace 將整個(gè)命名空間展開(kāi)
? ? ? 當(dāng)然,如果你愿意的話,你也可以將整個(gè)命名空間展開(kāi),這樣整個(gè)命名空間的東西都將暴露在全局。具體方式如下
namespace Dream
{
int a = 5;
int b = 10;
}
using namespace Dream; //展開(kāi)后使用命名空間內(nèi)的變量就無(wú)需再加前綴
int main()
{
a += 10;
printf("%d\n", a);
printf("%d", b);
return 0;
}
????????下面,我們?cè)賮?lái)看看許多C++程序中經(jīng)常出現(xiàn)的寫(xiě)法就很清楚了:
#include<iostream>
using namespace std;
int main()
{
return 0;
}
- 第一條語(yǔ)句的作用是包含輸入輸出流,下面我們會(huì)進(jìn)行說(shuō)明,這里我們可以暫且將理解為C語(yǔ)言的#include<stdio.h>
- 第二條語(yǔ)句是不是很熟悉啦,沒(méi)錯(cuò),就是用來(lái)展開(kāi)命名空間std的。std的英文全拼是Standard,即標(biāo)準(zhǔn)的意思。C++標(biāo)準(zhǔn)程序庫(kù)中的所有標(biāo)識(shí)符都被定義在這個(gè)命名空間中。顧這里將整個(gè)命名空間引入是為了后續(xù)更方便的使用C++標(biāo)準(zhǔn)程序庫(kù)的標(biāo)識(shí)符,如函數(shù)、類(lèi)型等等。
但是,雖然方便,但在實(shí)際工程中并不建議直接將整個(gè)命名空間展開(kāi)。原因是在大規(guī)模工程中,定義的變量太多,可能會(huì)出現(xiàn)定義的變量名與std命名空間的標(biāo)識(shí)符出現(xiàn)重復(fù)的情況,此時(shí)如果將std全部展開(kāi)就會(huì)出現(xiàn)重定義的BUG。
故比起將命名空間全部展開(kāi),我們更推薦使用第一種或者第二種使用方式。
?五. C++的輸入輸出
在學(xué)習(xí)C語(yǔ)言時(shí),我們寫(xiě)的第一個(gè)代碼就是hello world,那么在我們第一次接觸C++時(shí),是不是也應(yīng)該使用C++對(duì)美好的世界打個(gè)招呼呢?我們來(lái)試試C++是怎么實(shí)現(xiàn)輸入輸出的吧!
#include<iostream>
using namespace std; //展開(kāi)std命名空間
int main()
{
cout << "hello world!!!" << endl; //打印輸出
return 0;
}
?下面我們來(lái)分析分析上面的代碼
1、使用cout標(biāo)準(zhǔn)輸出對(duì)象(控制臺(tái))和cin標(biāo)準(zhǔn)輸入對(duì)象(鍵盤(pán))時(shí),必須包含<iostream>頭文件
以及按命名空間使用方法使用std。是的,iostream也是一個(gè)頭文件噢。2、cout和cin是全局的流對(duì)象,它們分別是ostream和istream類(lèi)型的對(duì)象。而endl是特殊的C++符號(hào),表示換行輸出,他們都包含在包含在<iostream>頭文件中。
3、<<是流插入運(yùn)算符,>>是流提取運(yùn)算符。它們是不是和我們C語(yǔ)言學(xué)到的左移和右移一模一樣?是的,這實(shí)際上是一種運(yùn)算符重載,我們后續(xù)會(huì)提到。
4、使用C++輸入輸出更方便,不需要像printf/scanf輸入輸出時(shí)那樣需要手動(dòng)控制格式,即%d、%f等等。C++的輸入輸出可以自動(dòng)識(shí)別變量類(lèi)型。
注意:早期標(biāo)準(zhǔn)庫(kù)將所有功能在全局域中實(shí)現(xiàn),聲明在.h后綴的頭文件中,使用時(shí)只需包含對(duì)應(yīng)頭文件即可,后來(lái)將其實(shí)現(xiàn)在std命名空間下,為了和C語(yǔ)言頭文件區(qū)分,也為了正確使用命名空間,規(guī)定C++頭文件不帶.h,這就是為什么<iostream>也是頭文件的原因。舊編譯器(vc 6.0)中還支持<iostream.h>格式,后續(xù)編譯器已不支持,因此推薦使用<iostream>+std的方式。
六. 缺省參數(shù)
6.1 缺省參數(shù)的概念
? ? ??缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值(默認(rèn)值)。在調(diào)用該函數(shù)時(shí),如果沒(méi)有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。具體形式如下:
#include<iostream>
using namespace std;
void Func(int a = 0) //給定缺省值0
{
cout << a << endl;
}
int main()
{
Func(); // 沒(méi)有傳參時(shí),使用參數(shù)的默認(rèn)值
Func(10); // 傳參時(shí),使用指定的實(shí)參
return 0;
}
6.2 缺省參數(shù)的分類(lèi)
? ? ? ?缺省參數(shù)分為全缺省參數(shù)和半缺省參數(shù)
? ? ? ?全缺省參數(shù)
? ? ? ?即所以參數(shù)都帶有缺省值
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
int main()
{
Func();
Func(10);
Func(20,30,40);
return 0;
}
? ? ? ?半缺省參數(shù)
? ? ? ??即部分參數(shù)都帶有缺省值
void Func(int a, int b = 10, int c = 20) //除了a其余參數(shù)都有缺省值
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
int main()
{
Func(); //錯(cuò)誤調(diào)用,第一個(gè)參數(shù)沒(méi)有缺省值,需要傳參
Func(10); //第一個(gè)參數(shù)傳入10,其余參數(shù)用缺省值
Func(20,30,40); //全部用指定的實(shí)參
return 0;
}
????????注意事項(xiàng)
- 規(guī)定半缺省參數(shù)必須從右往左依次給出,不能間隔著給。示例如下:
//錯(cuò)誤寫(xiě)法,必須從右往左不間斷 void Func(int a = 10, int b, int c) {}; void Func(int a = 10, int b = 20, int c) {}; void Func(int a = 10, int b, int c = 30) {}; //正確寫(xiě)法 void Func(int a, int b, int c = 30) {}; void Func(int a, int b = 20, int c = 30) {};
-
缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn)。其目的是為了防止我們?cè)诼暶骱投x中給出了不同的缺省值,從而導(dǎo)致歧義。
//錯(cuò)誤的寫(xiě)法 //test.h void Func(int a = 10); // a test.cpp void Func(int a = 20) {}
-
缺省值必須是常量或者全局變量
-
C語(yǔ)言不支持帶缺省參數(shù)的函數(shù)(編譯器不支持)
七. 函數(shù)重載?
7.1 函數(shù)重載的概念
函數(shù)重載:它是一種函數(shù)的特殊情況。C++允許在同一作用域中聲明幾個(gè)功能類(lèi)似的同名函數(shù),這
些同名函數(shù)的形參列表(參數(shù)個(gè)數(shù) 或 類(lèi)型 或 類(lèi)型順序)不同,常用來(lái)處理實(shí)現(xiàn)功能類(lèi)似、數(shù)據(jù)類(lèi)型不同的問(wèn)題。
假設(shè)我們要寫(xiě)一個(gè)Add函數(shù)實(shí)現(xiàn)兩個(gè)整型以及兩個(gè)浮點(diǎn)型的相加,在C語(yǔ)言中,我們應(yīng)該這么寫(xiě):
//C語(yǔ)言寫(xiě)法
int iAdd(int x, int y)
{
return x + y;
}
double dAdd(double x, double y)
{
return x + y;
}
int main()
{
iAdd(1, 2);
dAdd(1.0, 2.0);
return 0;
}
由于實(shí)參的類(lèi)型不同,我們需要寫(xiě)兩個(gè)Add函數(shù)分別實(shí)現(xiàn)整形和浮點(diǎn)型的相加,并且為了避免重定義,兩個(gè)函數(shù)名必須不同,難道這不覺(jué)得很別扭嗎
而C++引入了函數(shù)重載,我們就能很舒服的使用相同名稱來(lái)定義這兩個(gè)參數(shù)不同的函數(shù):
//C++寫(xiě)法,兩個(gè)Add函數(shù)構(gòu)成函數(shù)重載
int Add(int x, int y)
{
return x + y;
}
double Add(double x, double y)
{
return x + y;
}
int main()
{
Add(1, 2);
Add(1.0, 2.0);
return 0;
}
7.2 函數(shù)重載的條件
? ? ? ?C++構(gòu)成函數(shù)重載的條件是形參列表必須不同。形參列表不同分為以下三種:
? ? ? ? 1、參數(shù)個(gè)數(shù)不同
#include<iostream>
using namespace std;
//2、參數(shù)個(gè)數(shù)不同
void Fun(int x)
{
cout << "void Fun(int x)" << endl;
}
void Fun()
{
cout << "void Fun()" << endl;
}
int main()
{
Fun(1); //調(diào)用第一個(gè)
Fun(); //調(diào)用第二個(gè)
}
? ? ? ? 2、參數(shù)類(lèi)型不同
#include<iostream>
using namespace std;
//2、參數(shù)類(lèi)型不同
int Add(int x, int y)
{
cout << "int Add(int x, int y)" << endl;
return x + y;
}
double Add(double x, double y)
{
cout << "double Add(double x, double y)" << endl;
return x + y;
}
int main()
{
Add(1, 2); //調(diào)用第一個(gè)
Add(1.0, 2.0); //調(diào)用第二個(gè)
}
? ? ? ? 3、參數(shù)順序不同
#include<iostream>
using namespace std;
//3、參數(shù)順序不同
void Fun(int x , double y)
{
cout << "void Fun(int x , double y)" << endl;
}
void Fun(double x, int y)
{
cout << "void Fun(double x, int y)" << endl;
}
int main()
{
Fun(1,2.0); //調(diào)用第一個(gè)
Fun(2.0,1); //調(diào)用第二個(gè)
}
注意:是參數(shù)類(lèi)型的順序不同,而不是變量名順序不同,即以下寫(xiě)法不構(gòu)成函數(shù)重載:
//變量名順序不同不構(gòu)成函數(shù)重載,形參的名稱只是標(biāo)識(shí),本質(zhì)上還是同一個(gè)函數(shù) void Fun(int x , double y){}; void Fun(int y , double x){};
?? ? ? ? 4、缺省函數(shù)的重載
? ? ? ? ?此外,帶缺省參數(shù)的函數(shù)也可以構(gòu)成函數(shù)重載,編譯并不會(huì)報(bào)錯(cuò),但使用上可能會(huì)出現(xiàn)一些很尷尬的問(wèn)題,舉例如下
#include<iostream>
using namespace std;
//4、缺省函數(shù)的重載
void Fun(int x, double y = 1.0)
{
cout << "void Fun(int x , double y = 1.0 )" << endl;
}
void Fun(int x)
{
cout << "void Fun(int x)" << endl;
}
int main()
{
Fun(1, 2.0); //這里會(huì)調(diào)用第一個(gè)函數(shù)沒(méi)問(wèn)題
Fun(1); //此時(shí)既可以調(diào)用第一個(gè)函數(shù),也可以調(diào)用第二個(gè)函數(shù),存在歧義,會(huì)報(bào)錯(cuò)
}
由于缺省函數(shù)的重載很容易引發(fā)歧義,顧我們一般不也會(huì)這么寫(xiě)
??
7.3 C++支持函數(shù)重載的原因
????????可能會(huì)有很多小伙伴會(huì)疑惑:為什么C++支持函數(shù)重載,而C語(yǔ)言不支持函數(shù)重載呢?、
????????在C/C++中,一個(gè)程序要運(yùn)行起來(lái),需要經(jīng)歷以下幾個(gè)階段:預(yù)處理、編譯、匯編、鏈接
我們發(fā)現(xiàn),每個(gè).c文件都會(huì)生成屬于自己的符號(hào)表。main.c文件中sum函數(shù)只是聲明,故在符號(hào)表中并沒(méi)有sum函數(shù)的地址。而sum.c文件中的sum函數(shù)是定義,故在符號(hào)表中存在著sum函數(shù)的地址。當(dāng)鏈接器進(jìn)行鏈接時(shí),就會(huì)將兩張符號(hào)表進(jìn)行合并,此時(shí)符號(hào)表中既有main函數(shù)的地址,也有sum函數(shù)的地址,程序便可以正常運(yùn)行。
但是,如果兩個(gè)文件中的sum函數(shù)都是定義呢?如下:?
由于兩個(gè)符號(hào)表中的sum函數(shù)都是有效地址,進(jìn)行符號(hào)表合并后,符號(hào)表就會(huì)出現(xiàn)上面的相同符號(hào)不同地址的情況,會(huì)引發(fā)符號(hào)表的歧義,此時(shí)我們就不知道該去哪個(gè)地方找sum函數(shù)了,會(huì)報(bào)重定義的錯(cuò)誤。
?這就是為什么C語(yǔ)言不能定義同名函數(shù)的原因:重定義會(huì)引發(fā)符號(hào)表的歧義。
那就有人會(huì)想:C語(yǔ)言不行,那憑什么放到C++就可以呢,搞特殊?
首先要說(shuō)明的是,上面的兩個(gè)Add函數(shù)放到C++依然不構(gòu)成函數(shù)重載,因?yàn)樗鼈兊念?lèi)型相同。那C++為什么類(lèi)型不同就允許同名函數(shù)的存在呢?這是因?yàn)镃++引入了函數(shù)名修飾規(guī)則,函數(shù)在符號(hào)表中除了名稱,還一并將參數(shù)類(lèi)型代入修飾。
不同的編譯器下的函數(shù)名修飾規(guī)則可能有所不同,由于VS的函數(shù)名修飾規(guī)則過(guò)于復(fù)雜,下面我們采用Linux下的g++來(lái)進(jìn)行演示
源代碼清單
int Add(int x,int y)
{
return x + y;
}
double Add(double x,double y)
{
return x + y;
}
int main()
{
return 0;
}
采用gcc編譯(C語(yǔ)言)
為了正確進(jìn)行編譯,將第一個(gè)Add函數(shù)改為Add1,第二個(gè)改為Add2。編譯后查看匯編代碼如下:
采用g++編譯(C++)
Linux系統(tǒng)下的g++編譯器將函數(shù)修飾后變成【_Z+函數(shù)長(zhǎng)度+函數(shù)名+類(lèi)型首字母】的形式,形參的個(gè)數(shù)、順序以及類(lèi)型不同都會(huì)使得修飾后的函數(shù)名不同
?總結(jié)提煉
- 在linux下,采用gcc編譯完成后,函數(shù)名字沒(méi)有發(fā)生改變。
- 在linux下,采用g++編譯完成后,函數(shù)名字的修飾發(fā)生改變,編譯器將函數(shù)參數(shù)類(lèi)型信息添加到修改后的名字中。
- C語(yǔ)言沒(méi)辦法支持重載是因?yàn)橥瘮?shù)沒(méi)辦法區(qū)分。而C++是通過(guò)函數(shù)修飾規(guī)則來(lái)區(qū)分,只要參數(shù)不同,修飾出來(lái)的名字就不一樣,顧支持重載。
- 如果兩個(gè)函數(shù)僅僅是返回值不同是不構(gòu)成重載的,因?yàn)檎{(diào)用時(shí)編譯器沒(méi)辦法區(qū)分。
以上,就是本期的全部?jī)?nèi)容啦??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644047.html
制作不易,能否點(diǎn)個(gè)贊再走呢??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644047.html
到了這里,關(guān)于【C++深入淺出】初識(shí)C++上篇(關(guān)鍵字,命名空間,輸入輸出,缺省參數(shù),函數(shù)重載)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!