欢迎来到天天文库
浏览记录
ID:59132486
大小:17.52 KB
页数:12页
时间:2020-09-12
《虚函数纯虚函数普通函数.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),而只含有虚函数的类(cl5、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
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
此文档下载收益归作者所有