随笔分类 - C++学习笔记
1
摘要:重载函数匹配步骤: (1)候选函数的确定:与被调函数同名的函数 (2)选择可行函数:在候选函数中,选择可以调用的函数:1)参数个数与被调函数参数个数相等;2)实参类型与形参类型匹配或者可以隐式类型转换; (3)选择最佳匹配: ① 其每个实参匹配都不劣于其他可行函数需要的匹配 ② 至少有一个实参的匹配
阅读全文
摘要:题目描述:有一个搜索二叉树,对于树中的任意一个节点,其左子树的所有值小于该节点的值,而其右子树的所有值大于该节点的值。要求:在不定义任何新的节点情况下,将该二叉树转换成为一个排序双向链表。 假设有上面的二叉树,那么其转换为双向链表后的顺序应该为:2 3 4 5 6 7 8 对于链表头节点:其直接前驱
阅读全文
摘要:题目描述:给定一个复杂链表,该链表的节点除了包含指向下一个节点的指针,还包括一个指向链表中任意节点的指针。要求:将该链表复制一份并返回复制链表的头节点指针 复杂链表节点的定义如下: 题目分析:该复杂链表相比于常见的普通链表的节点多了一个指向任意链表节点的指针,因此我们可以考虑在复制的时候先将原链表复
阅读全文
摘要:(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同 define宏仅仅是展开,有多少地方使
阅读全文
摘要:NULL在c++中是一个宏,是一个空指针常量,如果将NULL扩展为常数,那么这个数是0,类型为int。 所以,常数0既是整型常量,也是空指针常量,这就有可能导致二义性问题。因此,c++11新标准引入了 nullptr,将其作为空指针常量。
阅读全文
摘要:异常处理的思想与程序实现 异常处理的基本思想 异常处理的语法 异常接口声明 一个函数显式声明可能抛出的异常,有利于函数的调用者为异常处理做好准备 可以在函数的声明中列出这个函数可能抛掷的所有异常类型。 例如:void fun() throw(A,B,C,D); 若无异常接口声明,则此函数可以抛掷任何
阅读全文
摘要:多态性 多态性是指操作接口具有表现多种形态的能力:它能够根据操作环境的不同而采用不同的处理方式,或者一组具有相同语义的方法能够在统一接口下为不同的对象服务。 多态性的实现: 绑定机制:绑定是将一个标识符和存储地址联系在一起的过程; 编译时的绑定通过静态绑定来实现:绑定工作在编译链接阶段完成,函数的重
阅读全文
摘要:类的继承的概念 继承是在保持已有类的基础之上构造新类的过程,而派生是指在已有类的基础之上新增自己的特性而产生新类的过程。二者是对同一个问题的不同描述,继承侧重于保持原有类的特性,而派生侧重于增加新的特性。被继承的类(即原有类)称为基类,派生出的类称为派生类。基类又分为直接基类和间接基类。 继承的目的
阅读全文
摘要:第四部分:指针与函数 指针作为函数参数:使用指针作为参数的原因:1、需要数据的双向传递;2、需要传递一组数据,只传首地址运行效率比较高。 案例: 运行结果: 注意:浮点数在c++中是近似存储的,因此,如果要比较两个浮点数的大小,不能直接使用“==”,而可以通过判断两个浮点数的差值是否小于一个足够小的
阅读全文
摘要:第三部分:动态存储分配 用指针访问数组元素 数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。使用指针来访问数组元素时,需要将数组的首地址赋值给指针变量,形式为: int *p,a[10];p=a(或者p=&a[0])。 经过上述定义及赋值后*p
阅读全文
摘要:用指针访问数组元素 数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。使用指针来访问数组元素时,需要将数组的首地址赋值给指针变量,形式为: int *p,a[10];p=a(或者p=&a[0])。 经过上述定义及赋值后*pa就是a[0],*(pa
阅读全文
摘要:第一部分:数组的定义与使用 数组的定义: 类型说明符 数组名[常量表达式][常量表达式] 常量表达式说明的是数组每一维的下标个数。例如,int a[10],表示a为整型数组,有10个元素:a[0],a[1],…,a[9]。数组必须先定义后使用,可以逐个引用数组元素。当需要处理数组中的元素时,可以很方
阅读全文
摘要:标识符的作用域与可见性 作用域是一个标识符在程序正文中有效的区域。 作用域分类 函数原形作用域 函数原型中的参数,其作用域始于"(",结束于")"。 函数原形作用域举例:double area(double radius); 局部作用域 函数的形参、在块中声明的标识符; 其作用域自声明处起,限于块中
阅读全文
摘要:面向对象程序设计的基本特点 抽象 抽象是对同一类对象的共同属性和行为进行概括,形成类。抽象时先注意问题的本质及描述,其次是实现过程或细节。抽象可以分为数据抽象和代码抽象,数据抽象是描述某类对象的属性或状态(对象相互区别的物理量),代码抽象是描述某类对象的共有的行为特征或具有的功能。抽象通过类来实现
阅读全文
摘要:函数 函数:定义好的、可重用的功能模块 定义函数:将一个模块的算法用C++描述出来 函数名:功能模块的名字 函数的参数:计算所需要的数据和条件 函数的返回值:需要返回的计算结果 函数定义的语法形式 类型标识符 函数名 (形式参数表) { 语句序列 } 调用函数需要先声明函数原型 若函数定义在调用点之
阅读全文
摘要:选择结构 if语句: if语句的语法形式 if (表达式) 语句 例:if (x > y) cout << x; if (表达式) 语句1 else 语句2 例:if (x > y) cout << x; else cout << y; if (表达式1) 语句1 else if (表达式2) 语句
阅读全文
摘要:运算与表达式 算术运算 基本算术运算符:+ - * /(若整数相除,结果取整) %(取余,操作数为整数) 优先级与结合性:先乘除,后加减,同级自左至右 ++, --(自增、自减),例:i++; --j; 二者区别:i++ :先引用后增加 ;++i :先增加后引用 赋值运算 将值赋给变量 赋值运算符“
阅读全文
摘要:基本数据类型、常量和变量 C++的特点 兼容C,支持面向过程的程序设计;支持面向对象的方法;支持泛型程序设计方法。 命名空间 避免命名冲突;std是C++标准库的命名空间( namespace);using namespace std表示打开std命名空间 C++字符集和词法记号 字符集: 大小写的
阅读全文
摘要:斐波拉契数列的元素是:1,1,2,3,5,8,13,…等 本例中以四种不同的方式来实现: 方法1:递归方法实现 代码: #include<iostream> #include<cmath> using namespace std; int f1(int i) { if (i == 0 || i ==
阅读全文
1

浙公网安备 33010602011771号