美文网首页
C++知识点

C++知识点

作者: 淇漯草 | 来源:发表于2020-05-02 00:21 被阅读0次

    模板

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

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

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

    · ()传入参数。

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

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

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

    相关文章

      网友评论

          本文标题:C++知识点

          本文链接:https://www.haomeiwen.com/subject/rqzwihtx.html