文章目錄
- 一、 C++的第一個代碼
- 1、C++兼容C語言
- 2、hello world 如何用C++語法來寫
- 二、命名空間namespace
- 1、為什么有命名空間
- 2、定義
- 3、命名空間的使用
- 4、注意事項
- 三、輸入輸出
- 四、缺省參數
- 1、定義
- 2、注意
- 五、函數重載
- 1、定義
- 2、使用
- 六、謝謝觀看!
一、 C++的第一個代碼
1、C++兼容C語言
就像我們所熟知的第一段C語言代碼,“hello world”,其在C++編譯器下也可以運行。
注:C語言程序后綴為 .c ,而C++程序后綴為 .cpp
如下圖:
這個C語言程序里面包含了 頭文件、主函數、返回類型。它在C++編譯器里面同樣能夠適用。
在C++文件中,我們同樣能夠使用C語言的語法,即C++兼容C語言。
2、hello world 如何用C++語法來寫
#include <iostream>
using namespace std;
int main()
{cout << "hello world" << endl;return 0;
}
在講解這段代碼之前,我們需要知道下面的基礎語法。
二、命名空間namespace
1、為什么有命名空間
在C/C++中,變量、函數和后?要學到的類都是大量存在的,這些變量、函數和類的名稱將都存在于全局作用域中,可能會導致很多沖突。使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突或名字污染,namespace關鍵字的出現就是針對這種問題的。
簡單來說,是用來減少命名沖突而造成程序錯誤的。
2、定義
其中,namespace是關鍵字,后面接命名空間的名字,在來一對花括號即可。{}中為命名空間的成員。
命名空間中可以定義變量、函數、類型等。如下圖:
命名空間的本質是定義一個域,根據不同的域里面的變量可以定義同名變量,來解決命名沖突。
3、命名空間的使用
編譯查找?個變量的聲明/定義時,默認只會在局部或者全局查找,不會到命名空間里面去查找。所以程序會編譯報錯。所以我們要使用命名空間中定義的變量/函數,有三種方式:
? 指定命名空間訪問,項目中推薦使用
其中,::為域作用限定符
? using將命名空間中某個成員展開,項目中經常訪問的不存在沖突的成員推薦這種方式。
? 展開命名空間中全部成員,項目不推薦,沖突風險很大,日常小練習程序為了方便推薦使用。
由此,我們可知,以下這段代碼的第二行的意思為:展開命名空間std中的所有成員。
4、注意事項
- namespace只能定義在全局,也可以嵌套定義。
- 項??程中多文件中定義的同名namespace會認為是?個namespace,不會沖突。
- C++標準庫都放在?個叫std(standard)的命名空間中。
C語言中的標準庫中是許多的函數。 而C++標準庫中,是由一個命名空間std給封裝起來的,其中又嵌套了一個又一個的命名空間。故在使用庫函數時,應該先展開要用的命名空間。
三、輸入輸出
- < iostream> 是Input Output Stream 的縮寫,是標準的輸?、輸出流庫,定義了標準的輸入、輸出對象。 故,寫程序要包含這個庫。
- std::cin 是 istream 類的對象,它主要面向窄字符(narrow characters (of type char))的標準輸入流。 在未展開std時,輸入應該寫為std::cin
- std::cout 是 ostream 類的對象,它主要面向窄字符的標準輸出流。
- std::endl 是?個函數,流插?輸出時,相當于插??個換行字符加刷新緩沖區。起換行作用。
- <<是流插?運算符,>>是流提取運算符
注:這里的輸入輸出可以自動識別變量的類型。也就是說,不需要指定變量的類型,就可以直接輸入輸出。
也可以直接輸出字符或字符串。如下;
四、缺省參數
1、定義
缺省參數是聲明或定義函數時為函數的參數指定?個缺省值。在調用該函數時,如果沒有指定實參
則采用該形參的缺省值,否則使用指定的實參,缺省參數分為全缺省和半缺省參數。(有些地方把
缺省參數也叫默認參數)
全缺省就是全部形參給缺省值,半缺省就是部分形參給缺省值。
2、注意
- C++規定半缺省參數必須從右往左依次連續缺省,不能間隔跳躍給缺省值。
- 帶缺省參數的函數調?,C++規定必須從左到右依次給實參,不能跳躍給實參。
- 函數聲明和定義分離時,缺省參數不能在函數聲明和定義中同時出現,規定必須函數聲明給缺省值。
五、函數重載
1、定義
C++?持在同?作用域中出現同名函數,但是要求這些同名函數的形參不同,也可以是參數個數不同或者類型不同。這樣C++函數調用就表現出了多態行為,使用更靈活。而C語言是不支持同?作用域中出現同名函數的。
2、使用
使用函數重載,可以使代碼寫的更加舒暢。