模板
函數(shù)模板、類模板
簡單實(shí)例如下。
#include <iostream>
using namespace std;
template <typename T> class ZRT;
template <typename T>
int compare(const T& a, const T& b){
if(a < b)return 1;
else return 0;
}
template <typename T>
class ZRT{
public:
ZRT(){};
bool compare(const T& data1, const T& data2){
return data1 < data2;
}
};
int main()
{
double a = 5.0; double b = 1.5;
ZRT<double> result;
cout << result.compare(a,b);
}
C++的虛函數(shù)
原理:1.每一個對象多一個虛函數(shù)指針。2.每一個類多一張?zhí)摵瘮?shù)表。
作用:基類指針調(diào)用子類函數(shù)。
#include <iostream>
#include <vector>
using namespace std;
class animal{
public:
virtual void printAnimal(){
using std::cout;
using std::endl;
cout << "Animal" << endl;
}
};
class cat: public animal{
public:
void printAnimal(){
using std::cout;
using std::endl;
cout << "cat" << endl;
}
};
int main()
{
animal *p = new cat;
p->printAnimal();
}
virtual關(guān)鍵字
純虛函數(shù):= 0
C++的特殊循環(huán)語句
range-based
具有迭代器
for(const auto &x : v)
// const可選 auto可改具體類型 &可判定是否引用
C++的函數(shù)調(diào)用
· C++的函數(shù)調(diào)用,使用括號 () 。
性質(zhì):調(diào)用函數(shù)時(shí),使用括號 (),只關(guān)心 function()是不是一個函數(shù)。
應(yīng)用:重載一個類的 ()運(yùn)算符,可通過傳遞對象來傳遞函數(shù)。
lambda函數(shù)(匿名函數(shù))

Lambda函數(shù)結(jié)構(gòu)
· []對外部引用的參數(shù),&,=。具有覆蓋性質(zhì)。默認(rèn)為=,且名字相同。(使用a1=a則可以修改名字)
· ()傳入?yún)?shù)。
· mutable:對捕獲參數(shù)而言,值為const。mutable允許其中修改值。
· throw() 本質(zhì)上是一種君子協(xié)定:代表我在這個函數(shù)中不拋出任何異常,如果有拋出異常,則會被編譯器捕捉到。(經(jīng)測試,沒有用處)
· 返回:(可選)由auto自動判斷。