C++知识点

模板

函数模板、类模板
简单实例如下。

#include 
using namespace std;
template  class ZRT;

template 
int compare(const T& a, const T& b){
    if(a < b)return 1;
    else return 0;
}

template 
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 result;
    cout << result.compare(a,b);

}

C++的虚函数

原理:1.每一个对象多一个虚函数指针。2.每一个类多一张虚函数表。
作用:基类指针调用子类函数。

#include 
#include 
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函数(匿名函数)

Lambda函数结构

· []对外部引用的参数,&,=。具有覆盖性质。默认为=,且名字相同。(使用a1=a则可以修改名字)

· ()传入参数。

· mutable:对捕获参数而言,值为const。mutable允许其中修改值。

· throw() 本质上是一种君子协定:代表我在这个函数中不抛出任何异常,如果有抛出异常,则会被编译器捕捉到。(经测试,没有用处)

· 返回:(可选)由auto自动判断。

你可能感兴趣的:(C++知识点)