C++ 异常处理 2019-12-27 参考 https://www.runoob.com/cplusplus/cpp-exceptions-handling.html C++ 自带的异常处理,可以用来处理 除数为 0、加法溢出 等一些情况。虽然我们可以使用普通的 if 来判断,但是也可以使用 C++ 提供的一些异常。 这样的好处,是用标准统一了异常处理,方便了一些操作,也“提高了代码的复用性”。 三个关键字 ...
C++ 命名空间 2019-12-27 命名空间是表达多个变量和多个函数组合成一个组的方法。主要是为了解决名字(类型、变量、函数名)冲突的问题。 定义命名空间 用一个例子来说明:在 MyStudent.h 和 YourStudent.h 中都定义了 Student 类,并在 main 函数中包含这两个文件。 //MyStudent.cpp class Student { public: vo ...
C++ 模板 2019-12-27 C++ 最重要的特征之一就是 代码重用。 所以有了这么一个东西,可以 > 不受数据类型的影响。可以将数据类型也参数化(又叫参数化程序设计)。 于是就产生了了模板。从模板的字面义来看,有了模板应该就可以自动“产生”一堆类似的东西。 函数模板 比如我们要写最大值的函数,可能要写: int max(int a, int b){return a > b ? ...
C++ 面向对象——继承、派生和多态 2019-09-29 派生,就是从原来的大类,通过增加新的东西、特性、条件,变成了新的小类。如,从哺乳动物通过增加特性(汪汪叫、喵喵叫),派生到狗、猫。 狗和猫,都继承了哺乳动物的特点(胎生等),派生的时候,狗、猫都会自动继承哺乳动物有的特点,无需重复声明。 名称上,被派生的(哺乳动物)叫基类(父类),派生出来的猫、狗叫做派生类(子类)。他们间的继承关系,是由派生类到大类。 (貌似继承和派生是反义词) 在 ...
C++类型转换 2019-09-17 隐式类型转换就是编译器自动转; 显式类型转换类如 (char) 强制类型转换运算符 MSDN 强制转换运算符 [C++ 强制转换运算符| 菜鸟教程](https://www.runoob.com/cplusplus/cpp-casting-oper ...
C++ 面向对象——类与对象 2019-09-10 类(Class)其实和 C++ 结构体差不多。 class ClassName { public: //公有成员 void setTime(int h, int m, int s); void showTime(){...} //在类内部实现成员函数 protected: //保护型成员 p ...
C++ I/O 输入输出 2019-09-04 C 语言风格 I/O 请见C I/O。 流:从某种 IO 设备上读入或写出的字符序列。 标准库中的 IO 对象,除了 cin、cout,还有: cerr:用来输出警告、错误给程序的使用者(可以理解为第二块屏幕) clog:用于产生 log。 cin, cout int ...
const、volatile 和 constexpr 2019-09-02 cv(const 与 volatile)类型限定符 | cppreference.com cv 限定符是 const 和 volatile 的合称。 当对象最初被创建时,所用的 cv 限定符决定对象的常量性或易变性。 const 大家都懂,就是不能修改的常量 (const ...
C++ 函数 2019-09-02 函数原型就是函数声明,常放在头文件里。 函数参数 f(void)==f() f(int*)==f(int[])==f(int[10]) 默认参数 在声明或定义中写默认参数,声明中必须写(不然人家咋知道调用的是谁呢) double sqrt(double f=1.0); void main(){ cout<<sqrt()<<endl; } do ...
指针 pointer & 引用 reference 2019-09-02 每个指针指向的是第一个字节,但是数是倒着存的(第一个字节是最低位)。如存一个int i=1024,再从第二个字节开始读,结果是4(当然先要清掉周围的内存)。 测试代码及输出: #include using namespace std; int main() { int i[10] = { 0,1024}, *pi = &i[1] ...