c++期末复习 (盲点)

下列仅记录本人本次复习中发现的盲点

函数中的static变量

函数中定义的static变量在函数执行后不会释放,因此值不会重新初始化

switch语句break作用

switch语句的原理在于跳转,判断后跳转至对应语句,如果没有break,后面的语句都会被执行。Break语句的作用在于跳出switch部分。

string类erase函数

  • 初始位置+长度 栗:erase(0,1) 删除第一个字符
  • 单个迭代器 栗: erase(s.begin()) 删除第一个字符
  • 初始迭代器+终止迭代器 栗: erase(s.begin(), s.end()) 删除所有字符

类的写法小细节

  • class Column{ } ; 注意; 分号不要掉

  • 继承的写法:class A: public B

  • 构造函数的初始化列表形式 Column(double a, double b): r(a), h(b){ }

  • 输入输出流运算符的重载 istream&operator>>(istream&sin,Complex &c) { int a,b; char t; sin>>a>>t>>b; c= Complex(a,b); return sin;}

全局变量与局部变量

  • 函数外部定义的变量成为全局变量,函数内部定义的变量是局部变量。(注意,main主函数中的变量本质上也是局部变量,只是生命周期与全局变量相同)
  • 局部变量的作用域仅仅在当前函数内部,在函数外部或其他函数中是没有访问权限的,故在其他函数调用该局部变量应传参。
  • 同名的情况下,在函数内部优先调用对应的局部变量。
  • 可以通过::访问全局变量

文件操作

  • ascii文件可读性强,是我们能看懂的文件,而二进制文件不加以转换,没有可读性。
  • ascii文件操作,定义istream(文件作为输入对象)ostream(文件作为输出对象)两个对象(名字任取如outfile, infile), 并将该对象用open函数与对应文件关联, 如 outfile.open(“路径”,方式(ios::out). 注意:此时输出输出的对象名infile,outfile等价于cin,out,用法完全相同
  • 二进制文件操作,定义方式与ascii相同,打开方式选择ios::binary. 读写方式: read,write函数,两个参数(初始位置,字节数)
  • 二进制文件的随机读写,注意文件指针位置的改变,函数:位置:ios::beg,ios::cur,ios::end; 调整位置:infile: seekp(调整大小,相对位置),outfile: seekg(调整大小,相对位置)

虚基类,虚函数,纯虚函数以及多态的实现(难点)

  • 虚基类是在继承过程中的一种方式,表现为class A: virtual public B{};作用是避免多重继承中的二义性(具体是怎样的就不解释了)注意:虚基类的直接子类中都必须加virtual
  • 虚函数,父类与子类相同函数的同名覆盖问题,同时实现多态。首先,我们可以用基类指针或引用指向子类对象。但是,在不声明为虚函数的情况下,用基类指针只能调用基类对应的函数。如果声明成虚函数,则用基类指针或引用指向的子类对象,如果调用该虚函数,会调用对应子类的虚函数。
  • c++不能建立引用数组,因此往往建立基类的指针数组,可以指向所有子类,进而用同一方式调用该虚函数。实现了动态多态。
  • 一旦基类将该函数声明为了虚函数,子类中均为虚函数。
  • 纯虚函数,形式:virtual void display()=0; 作用:声明了纯虚函数的类为抽象类,不能建立对象。如果子类不加以定义则仍为抽象类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值