zoukankan      html  css  js  c++  java
  • C++ 学习笔记

    1. 成员函数, 虚函数, 纯虚函数 的区别
    class A
    {
    public:
    void fun1();
    virtual void fun2();
    virtual void fun3() = 0;
    }
    calss B : A
    {
    public:
    void fun1();
    void fun2();
    void fun3();
    }
    int main(void)
    {
    B b;
    b.fun1(); // call fun1 in class A
    b.fun2(); // call fun2 in calss B, B::fun2 override A::fun2
    b.fun3(); // call fun3 in calss B, A::fun3 is a interface
    return 0;
    }
    2. 如果在局部定义一个对象,则这个对象在这个局部函数结束时自动删除。如果是new一个对象,则不管函数运行到哪里,
    这个对象一直存在,除非手动delete。
    如果在局部定义一对对象,并放入容器,则容器是复制这个对象进去。局部结束后,这个对象的副本仍然在。
    注意:每一个类的析构函数,一定要注意把这个类里所有的new都delete,要小心那些new后放进容器的。容易忽略。
    3. C++在一个类的头文件的前半部分(类的定义体前)声明其他类的作用?
    4. 类似于using Node::addChild;的作用? 
    5. 如何将依赖的项目生成静态链接库,这样就不用每次都链接都那么慢了?
    6. 上面一步,假设已经生成静态库,这个时候就不能改变静态库里的东西,为了能改变,如何换回以前的?
    7. Overload  重载
    在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同),即函数重载。
    (1)相同的范围(在同一个类中);
    (2)函数名字相同;
    (3)参数不同;
    请注意,重载解析中不考虑返回类型,而且在不同的作用域里声明的函数也不算是重载。
    Override    覆盖
    是指派生类函数覆盖基类函数,特征是:
    (1)不同的范围(分别位于派生类与基类);
    (2)函数名字相同;
    (3)参数相同;
    (4)基类函数必须有virtual 关键字。
    Overwrite:重写
    是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
    (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏。
    (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
    8. 如果要实现覆盖父类函数,则父类函数必须要有virtual关键字,否则就算子类覆盖了父类函数,调用时仍然调用父类。最后的就是子类在覆盖父类函数时加上override,增强可读性。
  • 相关阅读:
    C#实现带阴历显示的日期代码
    ASP.NET实现支付宝接口功能
    网站添加手机短信功能
    ASP.NET支付宝扫码即时到账支付开发流程(序言)
    ASP.NET支付宝扫码即时到账支付开发流程(下)
    ASP.NET支付宝扫码即时到账支付开发流程(上)
    如何把自己写的程序加入到开机启动项(Windows)
    C#操作注册表
    重温SQL——行转列,列转行
    Unity Hub破解
  • 原文地址:https://www.cnblogs.com/jeason1997/p/4795479.html
Copyright © 2011-2022 走看看