虚函数和抽象类

C++使用虚函数来指定哪些函数需要动态绑定的方式处理,其他非虚函数在编译连接阶段采用静态绑定方式,以节省执行阶段的时间.

1,虚函数的限制:(只要在基类中声明的虚函数是有意义的)

声明格式: virtual 类型说明符 函数名(参数表);

意义:被声明为虚函数的成员函数在派生类中可能有不同的实现.虚函数在派生类中定义.可在多个派生类中重新定义,但函数原型必须相同.

使用虚函数实现运行时多态性的关键:必须通过基类对象指针访问这些虚函数.

如果在派生类中没有重载虚函数,则在调用它时,使用基类中的函数版本.

1,只有类的成员函数才能声明为虚函数(虚函数仅适用于有继承关系的类对象),普通函数不能声明为虚函数.

2,静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象.

3,内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的.即使虚函数在类的内部定义,编译时仍将其看作是非内联的.

4,构造函数不能是虚函数,因为构造时对象还是一片未定型的空间.

5,析构函数可以是虚函数,而且通常声明为虚函数.设置虚析构函数后,可以利用动态绑定方式选择析构函数.

6.一般要求基类中声明了虚函数后,派生类声明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同.否则,派生类虚函数的参数类型会被强制转换为基类中虚函数的参数类型.

2,纯虚函数:     可获得一个统一的接口.

1,在基类中不对虚函数给出有意义的实现,只是把它声明为虚函数,在派生类实现.

2,声明格式:     virtual 类型 函数名(参数表)=0;

 

3,抽象类:

1,抽象类只能用作其他类的基类,不能建立抽象类对象.

2,抽象类不能用作参数类型,函数返回类型或显示转换的类型.

3,可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值