體驗(yàn)營(yíng)銷seo基礎(chǔ)優(yōu)化包括哪些內(nèi)容
目錄
1.命名空間
? ? ? ?1.1 定義
? ? ? ?1.2 使用
2.缺省參數(shù)
? ? ? ? ?2.1 概念
? ? ? ? ?2.2 分類
3.函數(shù)重載
4.引用
? ? ? ? ? ?4.1 概念
? ? ? ? ? ?4.2 特性
? ? ? ? ? ?4.3 常引用
? ? ? ? ? ?4.4 引用和指針的區(qū)別
5.內(nèi)聯(lián)函數(shù)
1.命名空間
#include <stdio.h>
#include <stdlib.h>int rand = 0;
// C語(yǔ)言沒辦法解決類似這樣的命名沖突問題,所以C++提出了namespace來解決
int main()
{printf("%d\n", rand);return 0;
}
// 編譯后后報(bào)錯(cuò):error C2365: “rand”: 重定義;以前的定義是“函數(shù)”
?? 1.1 定義
// 1. 正常的命名空間定義

?簡(jiǎn)單來說:命名空間可以定義函數(shù),變量,結(jié)構(gòu)。相對(duì)于編譯器而言,是尋找的規(guī)則。
//2. 命名空間可以嵌套
//3. 同一個(gè)工程中允許存在多個(gè)相同名稱的命名空間,編譯器最后會(huì)合成同一個(gè)命名空間中。
1.2 使用
命名空間的使用有三種方式:
- 加命名空間名稱及作用域限定符
int main()
{printf("%d\n", N::a);return 0; ? ?
}
- 使用using將命名空間中某個(gè)成員引入
using N::b;
int main()
{printf("%d\n", N::a);printf("%d\n", b);return 0; ? ?
}
- 使用using namespace 命名空間名稱引入
using namespce N;
int main()
{printf("%d\n", N::a);printf("%d\n", b);Add(10, 20);return 0; ? ?
}
?所以為了安全起見,這里建議在書寫項(xiàng)目的時(shí)候,盡量不展開std標(biāo)準(zhǔn)庫(kù),或者展開常用的部分:
?
2.缺省參數(shù)
2.1 概念
void Func(int a = 0)
{cout<<a<<endl;
}int main()
{Func(); ? ? // 沒有傳參時(shí),使用參數(shù)的默認(rèn)值Func(10); ? // 傳參時(shí),使用指定的實(shí)參return 0;
}
?
2.2 分類
- 全缺省參數(shù)
void Func(int a = 10, int b = 20, int c = 30){cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;}
- 半缺省參數(shù)
void Func(int a, int b = 10, int c = 20){cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;}

?
使用場(chǎng)景:
3.函數(shù)重載
- 參數(shù)類型不同
#include<iostream>
using namespace std;int Add(int left, int right)
{cout << "int Add(int left, int right)" << endl;return left + right;
}double Add(double left, double right)
{cout << "double Add(double left, double right)" << endl;return left + right;
}
- 參數(shù)個(gè)數(shù)不同
void f()
{cout << "f()" << endl;
}void f(int a)
{cout << "f(int a)" << endl;
}
- 參數(shù)類型順序不同
void f(int a, char b)
{cout << "f(int a,char b)" << endl;
}void f(char b, int a)
{cout << "f(char b, int a)" << endl;
}
簡(jiǎn)單提及一下,為什么c語(yǔ)言不支持函數(shù)重載,而c++支持?
代碼生成文件大致需要4個(gè)階段:
?
?c++在形成符號(hào)表的時(shí)候,會(huì)有專門的函數(shù)名修飾規(guī)則,即使是同一個(gè)函數(shù)名,參數(shù)類型不同,形成的符號(hào)表也不會(huì)相同。C語(yǔ)言沒辦法支持重載,因?yàn)橥瘮?shù)沒辦法區(qū)分。而C++是通過函數(shù)修飾規(guī)則來區(qū)分,只要參數(shù)不同,修飾出來的名字就不一樣,就支持了重載。另外如果兩個(gè)函數(shù)函數(shù)名和參數(shù)是一樣的,返回值不同是不構(gòu)成重載的,因?yàn)檎{(diào)用時(shí)編譯器沒辦法區(qū)分。
4.引用
4.1 概念
4.2 特性
?使用場(chǎng)景:
1.做參數(shù)
- 做輸出型參數(shù)
- 大對(duì)象傳參,提高效率
?
2.做返回值
- 輸出型返回對(duì)象,調(diào)用者可以修改返回對(duì)象
- 減少拷貝,提高效率
?
注:如果出了函數(shù)作用域,返回對(duì)象會(huì)銷毀的話,那么一定不能使用引用返回,要使用傳值返回。
4.3 常引用
?
?
4.4 引用和指針的區(qū)別
簡(jiǎn)單通俗來說:
?5.內(nèi)聯(lián)函數(shù)

注:以上概念性內(nèi)容均來自于比特科技。