模板
函数模板、类模板
简单实例如下。
#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++的虚函数
原理:1.每一个对象多一个虚函数指针。2.每一个类多一张虚函数表。
作用:基类指针调用子类函数。
#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关键字
纯虚函数:= 0
C++的特殊循环语句
range-based
具有迭代器
for(const auto &x : v)
// const可选 auto可改具体类型 &可判定是否引用
C++的函数调用
· C++的函数调用,使用括号 () 。
性质:调用函数时,使用括号 (),只关心 function()是不是一个函数。
应用:重载一个类的 ()运算符,可通过传递对象来传递函数。
lambda函数(匿名函数)
· []对外部引用的参数,&,=。具有覆盖性质。默认为=,且名字相同。(使用a1=a则可以修改名字)
· ()传入参数。
· mutable:对捕获参数而言,值为const。mutable允许其中修改值。
· throw() 本质上是一种君子协定:代表我在这个函数中不抛出任何异常,如果有抛出异常,则会被编译器捕捉到。(经测试,没有用处)
· 返回:(可选)由auto自动判断。