4、 常对象、常函数 :
(1) 常对象 :只能调用常函数; const Father p;
(2) 常函数 :成员函数之后加上const、函数内部不可以修改成员
属性;
代码:void func() const{}。
成员函数后面加const实质是修饰的是this的指向,this指针本身就是指针常量,指向不可以改,值可以改,再加上const之后,全都不可以改。 **注:普通对象也可以访问常函数。 **
但是在成员变量前加上mutable,常函数可以访问,常对象也可以访问。
5、 继承 :
(1)菱形继承:(虚基类)
一个动物类,一个马类,继承了动物类; 同样,一个驴类也继承了动物类。 这时,一个骡子类不仅继承了马类,也继承了驴类,这个时候从动物类里继承的数据很容易产生二义性,有好多数据,我们调用骡子类的时候到底用哪一个?
解决方法:在马类和驴类继承动物类的关键字前加上virtual,使其成为虚基类即可。 数据只保存最新赋值那一份。
Class Anmial
{Public:int m_age;};
Class Ma:virtual public Anmial{};
Class Lv:virtual public Anmial{};
Class Luozi{};
6、文件:
C++里对文件操作,包含的头文件#include。
文件分为两种:
①文本文件:就是记事本; 以ASCII码形式存在计算机中;
②二进制文件:以二进制的形式存在计算机中。
操作文件三大类:
①ofstream:写操作;
②ifstream:读操作;
③fstream:读写操作。
写文件:
创建文件输出流对象:ofstream ofs;
打开文件:ofs.open(“文件路径”,打开方式);
写数据:ofs<<”写入数据”;
关闭文件:ofs.open();
文件打开方式:
Ios::in:读文件而打开文件;
Ios::out:写文件而打开文件;
Ios::ate:初始位置:文件尾;
Ios::app:追加方式写文件;
Ios::trunc:如果文件存在,先删除,再创建;
Ios::binary:二进制方式。
读文件:(和写文件基本一致)
7、栈:(先进后出)
(1)顺序栈:
栈底指针:bottom,元素顶部指针:top; 记录栈内元素个数|top-bottom|+1。 如果bottom=top,表示栈空。
(2)链栈:
优点:便于多个栈共享存储空间和提高效率,并且不存在栈满上溢的情况。
8、队列:(先进先出)
队头:用来删除数据,头指针front(队头元素前一个位置);
队尾:用来插入数据,尾指针rear(队尾最后一个元素位置);
(1)循环队列:环状空间。 元素个数=rear(尾指针)-front(头指针)
(a)rear-front>0,就是循环队列元素个数;
(b)rear-front<0,需要加上循环队列的容量;
(c)rear-front=0,队列为空或者满。
(2)链式队列:
头指针指向队头结点,尾指针指向队尾结点。
队空条件:front=rear=NULL。
循环队列采用的是顺序存储结构;
一循环队列Q(1:m),初始状态为front=rear=m,经过一些列操作后,front=30,rear=10.则,按照顺序查找下,最坏比较次数为m-30+10+1=m-19个元素,比较次数为m-20。
9、new运算符
new运算符是在堆区创建数据由程序员手动开辟,手动释放。 **new返回的是该数据类型的指针。 **
例如:int *p = new int(10);
释放:delete p;
例如:int *p = new int[10];
释放:delete []p;
-
函数
+关注
关注
3文章
4304浏览量
62415 -
指针
+关注
关注
1文章
479浏览量
70506 -
C++
+关注
关注
22文章
2104浏览量
73482 -
变量
+关注
关注
0文章
613浏览量
28328 -
CONST
+关注
关注
0文章
43浏览量
8148
发布评论请先 登录
相关推荐
评论