虚函数纯虚函数普通函数.docx

虚函数纯虚函数普通函数.docx

ID:59132486

大小:17.52 KB

页数:12页

时间:2020-09-12

虚函数纯虚函数普通函数.docx_第1页
虚函数纯虚函数普通函数.docx_第2页
虚函数纯虚函数普通函数.docx_第3页
虚函数纯虚函数普通函数.docx_第4页
虚函数纯虚函数普通函数.docx_第5页
资源描述:

《虚函数纯虚函数普通函数.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++在继承中虚函数、纯虚函数、普通函数,三者的区别1.虚函数(impurevirtual)  C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。  子类可以重写父类的虚函数实现子类的特殊化。  如下就是一个父类中的虚函数:classA{public:virtualvoidout2(strings){cout<<"A(out2):"<

2、只提供申明,没有实现”,是对子类的约束,是“接口继承”。  C++中的纯虚函数也是一种“运行时多态”。  如下面的类包含纯虚函数,就是“抽象类”:classA{public:virtualvoidout1(strings)=0;virtualvoidout2(strings){cout<<"A(out2):"<

3、象的字面值有关。4.程序综合实例#includeusingnamespacestd;classA{public:virtualvoidout1()=0;///由子类实现virtual~A(){};virtualvoidout2()///默认实现{cout<<"A(out2)"<

4、out1();ab->out2();ab->out3();cout<<"************************"<out1();bb->out2();bb->out3();deleteab;deletebb;return0;}C++虚函数与纯虚函数用法与区别(转)1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(cl

5、ass)不能被称为抽象类(abstract class)。2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base class)只有声明而没有定义。 3. 虚函数和纯虚函数都可以在子类(sub class)中被重载,以多态的形式被调用。 4. 虚函数和纯虚函数通常存在于抽象基类(abstract base class -ABC)之中,被继承的子类重载,目的是提供一个统一的接口。 5. 虚函数的定义形式:virtual {method body}纯虚函数的定义形式

6、:virtual { } = 0;在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time bind),而且被两者修饰的函数生命周期(life recycle)也不一样。 6. 虚函数必须实现,如果不实现,编译器将报错,错误提示为:error LNK****: unresolved external symbol "public: virtual void __thiscallClassName::virtualFunctionName(void)"7. 对于虚函数来说,父类和子类都有各

7、自的版本。由多态方式调用的时候动态绑定。 8. 实现了纯虚函数的子类,该纯虚函数在子类中就编程了虚函数,子类的子类即孙子类可以覆盖该虚函数,由多态方式调用的时候动态绑定。9. 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数10. 多态性指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。a.编译时多态性:通过重载函数实现b 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。