1.名字修飾
在c語言中名字修飾只是在函式名前面加下劃線,所以只要在函式名相同就會導致衝突。
在c++中,名字修飾時由「?函式名@網域名稱1@網域名稱2…@@引數列表@z」的格式構成的,包含:
a.函式名
b.所在域
c.引數列表
所以在c++中只有以上三個完全相同才會衝突,這就是函式過載的原理
2.extern"c"
使用extern"c"修飾一段語句或將一段**包起來,將會採用c風格進行編譯
一.引用
引用就是給乙個變數起了乙個別名,兩個名字都是乙個變數,所以操作誰從結果上看都一樣。
引用是代替指標完成跨棧操作的,所以它具備指標跨棧的一切特點。
引用的底層實現實際上是指標
#include
using
namespace std;
void
func
(int
&a,int
&b)int
_main()
特點:
1.引用在定義時必須初始化。
2.乙個變數可以有多個引用。
3.引用一旦引用了乙個變數就不能引用其他變數了。
引用和指標的區別:
1.引用在定義時必須初始化,指標沒有要求;
2.引用一旦引用乙個實體後就不能引用其他實體,指標可以在任何時候指向任何乙個同型別的實體;
3.有空指標,但沒有空引用;
4.在sizeof中含義不同,引用在sizeof中的含義為指向型別的大小,指標在sizeof中的大小為位址空間所佔的位元組個數(在32位平台下是4個位元組,在64位平台下是8個位元組);
5.引用自加1為實體自加1,指標自加1,為指標向後偏移乙個型別大小;
6,有多級指標,但沒有堆積引用;
7.訪問實體的方式不同,指標需要顯示解引用。引用編譯器自己處理;
8.引用比指標使用起來更加安全。
二.內聯函式
呼叫時不建立新棧而直接在呼叫處展開的函式為內聯函式,關鍵字為inline。
內聯函式就是對編譯器的建議,如果函式過於複雜,編譯器不會接受建議,而處理成普通的函式。
inline函式可以代替帶參巨集
三.auto(c++11)
auto是乙個型別修飾符,他會根據你給初始化變數值的型別來決定自己的型別
aotu定義的變數必須初始化,否則不知道auto是什麼型別
auto可以連續定義變數,型別由第乙個定義變數的型別決定,後續不能違背這個型別,但是可以定義對應型別的指標和引用
auto不能做函式的引數型別
auto不能參與陣列的型別
c++11,後auto失去原本的含義
四.巨集的優缺點?
優點:1.增加**的復用性。
2.提高效能。
缺點:1.不方便除錯巨集。(因為預編譯階段進行了巨集替換)
2.導致**可讀性差,可維護性差,容易誤用。
3.沒有型別安全檢查。
c++有哪些技術代替巨集?
1.常量定義換用const。
2.函式定義換用內聯函式。
C 學習筆記1 基本語法
在 c 中,有些識別符號在 的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字 contextual keywords 下表列出了 c 中的保留關鍵字 reserved keywords 和上下文關鍵字 contextual keywords 保留關鍵字 abstract asb...
C 學習筆記(1)基本語法
1.簡介 優點 缺點 2.程式結構 注意點 3.基本語法 4.資料型別 引用型別 不包含儲存再變數中的實際資料,但包含對變數的引用,指的是乙個記憶體位置 動態型別 與物件型別相似,型別檢查在執行時發生 字串型別 system.string 類的別名,從object類派生。使用者引用型別 class ...
C 基本語法 day1
感謝!正在苦惱不知從何學起的菜鳥!include using namespace std main 是程式開始執行的地方 int main c 語言定義了一些標頭檔案,這些標頭檔案包含了程式中必需的或有用的資訊。上面這段程式中,包含了標頭檔案 using namespace std 告訴編譯器使用 ...