秋招C++开发学习之路day2

day2(类模板、构造函数和析构函数制成顺序、继承、虚函数、纯虚函数、多态)

  1. 类模板,同样的类只是类型不同就可以使用一个模板来定义类,然后调用时加入类型
    在类的声明之前加入 template<class 虚拟类型参数〉,类里面类型都用虚拟类型参数代替。
    然后定义对象的时候两种:类名<类型名>对象名(实例列表);列表也可以没有,另外初化。
    当成员函数在类模板外定义的时候,
    template <class 虚拟类型参数〉
    函数类型类模板名〈虚拟类型参数〉: : 成员函数名(函数形参表列){ · · }
  2. 构造函数和析构函数的执行顺序,通产来说是 先构造的函数最后执行析构函数。意思就是执行析构函数的顺序与构造函数顺序相反。
    在函数中定义的对象,在建立对象时调用构造函数(多次调用则函数则多次调用构造函数),并在函数调用结束时调用析构函数。
    当在函数中定义静态局部对象的时候,static Box box;在建立对象时调用构造函数,main函数结束或者调用exit函数结束时调用析构函数。
  3. 继承,有公用、保护、私有三种继承方式。形式:class 新类名::继承方式 继承的类{ };
    继承后私有成员只能被本类访问!公有继承,基类共有和保护为派生类基类和共有。保护继承,共有和保护都变为都成为派生类保护成员。私有继承则共有和保护变为派生类私有,基类私有还是属于基类。
  4. 继承的构造函数,形式: 新类名(带数据类型的 基类和新类参数表):基类名(基类参数表){新类参数初始化}。例子:CStudentl (int n , string nam , char s , int a , string ad) : CStudent (n , nam,s){}。
    调用构造函数的顺序,先调用基类的构造函数,从派生类往上查找然后从最后开始调用构造函数,如果调用的类中有对象被声明,则基类调用完再调用对象的构造函数。最后调用派生类的构造函数。析构函数调用则全部反过来。
  5. 虚函数,在基类成员函数前加上virtual关键字,表示虚函数。就可以用基类指针调用派生类同名的成员函数,实现多态。就是同一类族中不同类的对象可以对同一个函数做出不同的响应,就是多态性。在类外定义虚函数时不用加virtual关键字。
    派生类定义同名成员函数时,要名字类型参数全都一样。一个成员函数被声明为虚函数时,其派生类同名函数自动成为虚函数。可以不加关键字,但是一般都加上,方便理解。需要定义基类指针,指向派生类时就可以调用派生类的同名成员函数。
  6. 虚函数的使用,只用于类的继承中,要看情况考虑基类成员函数是否需要定义为虚函数。编译系统为构造一个虚函数表,是一个数组指针,用于存放每个虚函数的入口地址,系统进行动态关联的时间开销是很少的,所以多态是高效的。
  7. 纯虚函数,形式:virtual void 函数名()=0;含有纯虚函数的基类,不能被用作生成对象。必须被继承后重载实现多态才行。含有纯虚函数的类也叫抽象类。
    虚函数是多态的基础。当子类由基类指针被删除时,如果基类析构函数是 非虚函数时,就会出错,会导致子类析构函数没有执行。
    给基类的析构函数变为虚函数后就能正常执行析构函数了。这样就能实现 动态联编 ,也就实现了多态。
  8. 单例模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值