c++笔记2
一 继承和多态、虚函数:类不必重复造轮子,可以从其它基类派生而来(多重继承(由多个基类的特点)和虚拟继承(基类的一些特性在继承之间共享))。派生类需要在自己的头文件中包含基类头文件,切派生类声明要指明继承的基类,派生类的扩展部分可以放在派生类的私有部门;基类的成员分为共有(在程序的任何时刻都可访问,默认是内联函数)、私有(只有基类自己可访问)、受保护(给派生类的接口)。
虚函数:类似__WEEK__关键词,相当于函数重定向,如果你不重写该函数则用默认的(基类的函数),否则调用的时候用你自己的函数。注意虚函数和函数重载的区别:函数的重载是靠参数(个数,类型、顺序)而非返回值(not care),但函数名必须相同且必须在同一个类中;而虚函数的函数名、返回值、参数(个数 类型 顺序)必须相同,它们是出现在继承的关系中。基类中必须有virtual。即出现以下情况,函数的调用取决于是基类指针还是派生类指针;只有基类加virtua关键字才说明是虚函数关系:
1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)
2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
派生类向基类的传参:序列化列表,在构造函数后加 “: _val( val ){} ”
二泛型设计与类模板:操作相同但参数类型不同可以将其设置成类模板,也即将参数化,方法是在类前面或者函数前加template < class elemType > ,而在需要可能有变化的参数前都加class elemType< 参数类型> 。
三异常处理设计:碰到异常会raise/throw异常,然后由catch获得这个异常,从国cerr<<进行输出。if ( ! infile ) {
string errMsg( "unable to open file: " );
errMsg += fileName;
throw errMsg;
}
catch( string exceptionMsg ) {
log_message( exceptionMsg );
return false;
}
四命名空间using namespace std:
为了防止标准 C++库的组件污染用户程序的全局名字空间 所有标准 C++库的组件都声明在一个被称为 std 的名字空间内 .所以只include头文件还是不能使用其组件。但是为了更精细的可见,可用域操作符::对命名空间的组件进行申明
名字空间别名 namespace alias 允许用一个可替代的 短的或更一般的名字与一个现有的名字空间关联起来 ,相当于用#define 起了个新名字这样简短些。
五 容器、标准数组-向量 泛型算法:向量提供了容器的一些操作,但具体的一些排序、查找等操作都是通过泛型算法实现的
#include <vector>
#include <algorithm>
相关文章
- JetBrains C++ IDE CLion配置与评测
- 【C++】set/multiset/map/multimap
- 23 DesignPatterns学习笔记:C++语言实现
- 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法
- c++字符串连接方法大观
- C++学习笔记_21 优先级队列实现-堆积树-堆排序 2021-05-24
- C++学习笔记_16 线性容器-List容器 2021-05-13
- C++学习笔记_04抽象类、多态 2021-04-15
- C/C++趣味程序设计百例(31~40)
- 学习C++笔记135
- 【转】Gvim配置(Windows and Linux)for C++
- [C++] explicit关键字使用方法
- C++编程思想重点笔记(上)
- 初步C++运算符重载学习笔记<3> 增量递减运算符重载
- VC++、MFC最好的开源项目
- Linux平台用C++实现事件对象,同步线程
- C++子类的拷贝构造和拷贝赋值
- C++入门知识点总结
- C++ 采集音频流(PCM裸流)实现录音功能
- C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗口
- C++windows内核编程笔记day01_day02