当前课程知识点:程序设计基础(下) > 拓展学习 > C++常见问题汇总 > C++常见问题汇总
1、类成员的访问关系:公有成员在程序的任何地方都可以被访问,私有成员只能被该类的成员函数或该类的友元访问,保护成员只能在该类的内部或其派生类类体中使用。
2、无参构造函数和有参构造函数:可以同时定义无参构造函数和有参构造函数。
3、类函数有定义了无参数构造函数和析构函数,却忘记写具体函数内容。
4、调用无参成员函数时漏掉括号“()”。
5、静态数据成员需要初始化以后再使用。
6、使用Visual Studio的预编译头功能,但是忘记包含pch.h文件。
1、多继承和多重继承的区别:多继承是指有多个基类,多重继承是指继承具有传递性。
2、多态性调用虚函数时漏掉指针或引用。
3、声明抽象类时易漏掉“=0”。
1、puts()和cout的区别:puts()函数输出字符串后会自动换行,而cout不会自动换行。
2、gets()与cin的区别:gets()只有遇到换行符才表示一个字符串的结束,而cin遇到换行符、空格和制表符均表示字符串的结束。
3、<<和>>重载时需要return out/in。
4、read、write函数除了需要给出字符型指针参数外,还需要给出一个需要读取/写入的字符的长度数值,若是长度小于0或者或者大于字符型指针参数的长度,会有溢出的情况。
5、getline函数可以读取空白字符,因此在输入过程中,需要遇到“\0”或者到达指定长度时候才会结束读取。
1、函数模板和函数重载的区别:重载函数各函数体内可以执行不同的代码;一个函数模板实例化的不同模板函数执行的是相同的代码,区别是处理的数据类型不同。
2、定义类模板的时候,要将类模板的声明和类模板成员函数的定义放在同一个头文件里。
3、类模板的静态成员不应定义在类内。
4、类模板中的友元模板函数参数类型可以和类参数类型不一样。
1、逻辑结构与存储结构:逻辑结构有线性结构、树状结构、网状结构和集合结构,存储结构有顺序存储、链式存储、索引存储和散列存储。
2、初始化成员时动态分配的内存,需要在析构函数中释放。
3、将二叉树误认为存储结构。
1、带头结点的单链表H为空的判定条件H->next==NULL,不带头结点的单链表H为空的判定条件是H==NULL;
2、带头结点的循环链表和带头结点的单链表的区别:①循环链表的头结点的数据域为任意或者根据需要来设置,头结点的指针域指向线性表的第一个元素的结点(首结点)。头指针指向表头结点;② 循环链表中最后一个结点的指针域不是NULL,而是指向表头结点。即在循环链表中,没有空指针,所有结点的指针构成了一个环状链;
1、栈为空时,top指向栈底,即top=-1。
2、循环队列,在使用关系“(rear+1)%(MaxSize-1)==front”实现时,需要用这个表达式判断队列是否已“满”。
1、满二叉树和完全二叉树关系:满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树。
2、实现递归的时候一定要定义推出条件,否则会造成死循环。
1、对无向图进行遍历的时候,忘记在头文件中对“已访问”过的点进行标记,导致图的遍历过程出现“重复”与“往返”。
2、有向图,如邻接压缩表、邻接链表的表示上忘记方向的表述。
-C++的常见错误
--C++的常见错误
-MFC入门
--MFC入门
-STL及使用示例
--STL及使用示例
-算法设计与算法分析基础
-算法设计基本方法与策略基础
-计算机前沿问题思考
-QT编程入门
--QT编程入门
-C++中的string类
-面向对象方法应用实例
-继承与多态应用实例
-排序算法
--排序算法
-C++常见问题汇总
-学习感悟(1)
--学习感悟(1)
-学习感悟(2)
--学习感悟(2)
-学习感悟(3)
--学习感悟(3)
-学习感悟(4)
--学习感悟(4)
-1.1面向对象方法的基本概念
-1.1面向对象方法的基本概念--作业
-1.2 C++中类的定义
-1.2 C++中类的定义
-1.3C++中对象的定义和访问
-1.3C++中对象的定义和访问--作业
-1.4类成员的访问控制
-1.4类成员的访问控制--作业
-1.5析构函数
--1.5析构函数
-1.5析构函数--作业
-1.6拷贝构造函数
-1.6拷贝构造函数--作业
-1.7 类声明与类实现的分离
-1.7 类声明与类实现的分离--作业
-1.8类的静态成员
-1.8类的静态成员--作业
-1.9类的常量成员
-1.9类的常量成员--作业
-1.10this指针
-1.10this指针--作业
-1.11类的友元
--1.11类的友元
-1.11类的友元--作业
-1.12类的对象成员
-1.12类的对象成员--作业
-1.13自定义类的运算符重载
-1.13自定义类的运算符重载--作业
-2.1 派生类的定义和继承方式
-2.1 派生类的定义和继承方式--作业
-2.2 派生类中函数的重定义
-2.2 派生类中函数的重定义--作业
-2.3派生类的构造函数和析构函数
-2.3派生类的构造函数和析构函数--作业
-2.4多继承
--2.4多继承
-2.4多继承--作业
-2.5多态
--2.5多态
-2.5多态--作业
-2.6抽象类
--2.6抽象类
-2.6抽象类--作业
-3.1cout和cin对象及插入和提取运算符
-3.1cout和cin对象及插入和提取运算符--作业
-3.2 使用put和get函数进行标准输出和输入
-3.3使用getline函数进行标准输入
-3.3使用getline函数进行标准输入--作业
-3.4 文件流对象
-3.5文件流对象及插入和提取运算符
-3.5文件流对象及插入和提取运算符--作业
-3.6文件流对象及put、get和getline函数
-3.7按数据块进行输入输出
-3.8按数据块进行输入输出实例
-3.8按数据块进行输入输出实例--作业
-3.9文件的随机读写
-3.9文件的随机读写--作业
-3.10用户自定义数据类型的输入输出
-3.10用户自定义数据类型的输入输出--作业
-4.1函数模板
--4.1函数模板
-4.1函数模板--作业
-4.2类模板
--4.2类模板
-4.2类模板--作业
-5.1数据结构基本概念(一)
-第五章 概论--5.1数据结构基本概念(一)
-5.2数据结构基本概念(二)
-5.2数据结构基本概念(二)--作业
-6.1线性表及其抽象数据类型
-6.1线性表及其抽象数据类型--作业
-6.2顺序表类模板
-6.2顺序表类模板--作业
-6.3顺序表的实现
-6.3顺序表的实现--作业
-6.4简单数据元素顺序表的应用问题
-6.4简单数据元素顺序表的应用问题--作业
-6.5复杂数据元素顺序表的应用问题
-6.5复杂数据元素顺序表的应用问题--作业
-6.6单向链表及其类模板
-6.6单向链表及其类模板--作业
-6.7单项链表的实现(一)
-6.7单项链表的实现(一)--作业
-6.8单项链表的实现(二)
-6.8单项链表的实现(二)--作业
-6.9单向链表的应用
-6.10循环链表及双向链表
-7.1栈及顺序栈
--7.1栈及顺序栈
-7.1栈及顺序栈--作业
-7.2 顺序栈的实现
-7.2 顺序栈的实现--作业
-7.3顺序栈的应用
-7.4 链接栈及其实现
-7.4 链接栈及其实现--作业
-7.5队列及其顺序存储
-7.5队列及其顺序存储--作业
-7.6 顺序循环队列的实现
-7.6 顺序循环队列的实现--作业
-7.7顺序循环队列的应用
-7.8链接队列及其实现
-7.8链接队列及其实现--作业
-8.1树的基本概念
-8.1树的基本概念--作业
-8.2二叉树及其性质
-8.2二叉树及其性质--作业
-8.3二叉树的抽象数据类型和顺序表示
-8.3二叉树的抽象数据类型和顺序表示--作业
-8.4二叉树的链式表示
-第八章 树和二叉树--8.4二叉树的链式表示
-8.5二叉链表的实现(一)
-8.6二叉链表的实现(二)先序和中序遍历
-8.6二叉链表的实现(二)先序和中序遍历--作业
-8.7二叉链表的实现(三)后序和逐层遍历
-8.7二叉链表的实现(三)后序和逐层遍历--作业
-8.8二叉链表的实现(四)
-8.9 二叉排序树
-8.10哈夫曼树和哈夫曼编码
-9.1图的基本概念及其特征
-9.1图的基本概念及其特征--作业
-9.2图的抽象数据类型和表示方式
--Video
-9.2图的抽象数据类型和表示方式--作业
-9.3图的邻接矩阵表示法的实现
-9.3图的邻接矩阵表示法的实现--作业
-9.4图的广度优先遍历
--Video
-9.4图的广度优先遍历--作业
-9.5图的深度优先遍历
-9.5图的深度优先遍历--作业
-9.6图的应用
--9.6 图的应用
-面向对象方法
--面向对象例题讲解
--友元和运算符重载
--对象成员
-继承与多态
--多重继承
--虚函数
--抽象类和纯虚函数
-输入输出流
--输入输出流操作
-模板
--函数模板
--类模板