C++学习笔记:纯虚函数与抽象类详解

需积分: 48 1 下载量 100 浏览量 更新于2024-08-19 收藏 17.46MB PPT 举报
本文是关于C++学习的笔记,主要探讨了纯虚函数和抽象类的概念,以及它们在编程中的应用规则。同时,文件提到了C++的学习资源、课程介绍、C++的发展历史和行业地位。 在C++中,纯虚函数是一个在基类中被声明为虚函数,并且没有在基类中给出具体实现的函数。通过在函数声明后面加上`=0`来定义纯虚函数,例如`virtual void draw()=0;`。这样的类被称为抽象类,因为它们不能被实例化,只能作为其他类的基类使用。抽象类的主要作用是定义一个接口,供派生类继承并提供具体实现。 抽象类的一个特性是,可以定义指向抽象类的指针和引用,但不能直接创建抽象类的对象。例如,下面的代码是合法的: ```cpp class Base { public: virtual void draw()=0; }; void draw(Base *base) {} // OK void draw(Base &base) {} // OK ``` 然而,抽象类不能作为函数的返回类型或者直接初始化的对象类型,如下所示的代码将产生错误: ```cpp Void draw(Base base){} // ERROR Base draw(){} // ERROR (Base)derived; //ERROR ``` C++是一种强大的、通用的编程语言,由Bjarne Stroustrup博士创造,它在C语言的基础上增加了对面向对象、数据抽象和泛型编程的支持。C++经历了三个发展阶段,从最初的面向对象扩展,到引入模板和标准模板库(STL),再到模板元编程的出现。C++广泛应用于嵌入式系统、游戏编程、网络编程和系统编程等领域,具有重要的行业地位。 学习C++通常会参考一些经典的书籍,如《The C++ Programming Language》、《C++ Primer》、《C++大学教程》和《C++高级编程》。课程通常为必修,包含理论和实践两部分,作业以选择题、填空题和编程题为主,通过在线平台提交,并有明确的时间限制。C++的标准在1998年由ANSI/ISO设立,随着语言的发展,C++不断适应新的编程需求和技术趋势。

15:23:44.436 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:44.532 -> 15:23:44.532 -> Soft WDT reset 15:23:44.532 -> 15:23:44.532 -> Exception (4): 15:23:44.532 -> epc1=0x40106871 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 15:23:44.628 -> 15:23:44.628 -> >>>stack>>> 15:23:44.628 -> 15:23:44.628 -> ctx: cont 15:23:44.628 -> sp: 3ffffd30 end: 3fffffd0 offset: 0160 15:23:44.676 -> 3ffffe90: 60000314 00000006 00000044 40202e23 15:23:44.724 -> 3ffffea0: 00000002 3ffee608 3ffee774 40202f11 15:23:44.820 -> 3ffffeb0: 00000048 3ffee774 00000001 3ffee57d 15:23:44.820 -> 3ffffec0: 60000314 00000001 3ffee774 00000002 15:23:44.916 -> 3ffffed0: 3ffef5c4 3ffee556 00000002 402013c0 15:23:44.965 -> 3ffffee0: 00000001 00000048 00000000 402013f4 15:23:45.012 -> 3ffffef0: 3ffee774 3ffee57c 00000002 402017e4 15:23:45.060 -> 3fffff00: 00000000 00000001 3ffee574 3ffef5c4 15:23:45.108 -> 3fffff10: 00000002 00000002 00000000 40201860 15:23:45.156 -> 3fffff20: 3ffee556 00000001 00000001 00000000 15:23:45.204 -> 3fffff30: 00000000 00000003 3ffef5c4 3ffee72c 15:23:45.252 -> 3fffff40: 3fffdad0 3ffee556 3ffee548 402015bc 15:23:45.300 -> 3fffff50: 60000314 00000000 3ffee548 402015e4 15:23:45.396 -> 3fffff60: 3fffdad0 00000000 3ffee548 40201692 15:23:45.396 -> 3fffff70: 00000001 00000048 3ffee548 402010a3 15:23:45.492 -> 3fffff80: 00000000 feefeffe 3ffee774 3ffee72c 15:23:45.492 -> 3fffff90: 3fffdad0 00000000 3ffee574 4020143c 15:23:45.588 -> 3fffffa0: 3ffee55c 00000000 3ffef5c4 3ffee72c 15:23:45.636 -> 3fffffb0: 3fffdad0 00000000 3ffee700 40202300 15:23:45.685 -> 3fffffc0: feefeffe feefeffe 3fffdab0 40100eb1 15:23:45.733 -> <<<stack<<< 15:23:45.733 -> 15:23:45.733 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:45.828 -> H!⸮⸮L^⸮ ⸮⸮@H⸮JG⸮⸮⸮E

2023-07-14 上传