前者是定义一个虚函数,后者是定义一个纯虚函数,可以理解为接口。虚函数在C++里的作用是为了配合多态使用,也就是说,基类的指针指向派生类的对象时,我们调用的这个虚函数,实际上是当前实际的派生类对象响应(如果派生类实现了该方法)这个过程推荐看下关于面向对象的一大特性多态。
=0的那个是纯虚函数(类似其它语言中的抽象方法),拥有纯虚函数的类(类似其它语言中的抽象类)不能用来创建对象,只能被子类继承。同时,纯虚函数可以有函数体,但需在类外给出定义。下图是一个例子:
下面的主程序中,语句( )是错误的。class A {int i;public:virtual void fun()=0;A(int a) { i=a; }};class B {int j;public:void fun() { cout<<” B::fun() n” ; }B(int b,int c) :A(b) { j=c; }};void main() 参考答案为 :AA *pa;B b(7);B *pb;} ...
#include class A{int i;public:virtual void fun()=0;A(int a){i=a;}};class B:public A{int j;public:void fun(){cout 答案 答案:B(int m,int n=0):A(m),j(n){}因为基类是抽象类,不能被实例化,所以在派生类中不能调用初始化基类对象。所以B(int m,int n=0):A(m),j(n){}...
#include<iostream.h> class A{ public: virtual void fun()=0{}; }; class B:public A{ public: void fun () {cout<< "new file" ;} }; class C: public A{ public: void fun (){cout<<"open file"<< " " } }; class D: public A{ public: void fun () {cout<< "save file\n...
virtual void g() { cout << "Base::g" << endl; } virtual void h() { cout << "Base::h" << endl; } } 1. 2. 3. 4. 5. 6. 按照上面的说法,可以通过Base的实例来得到虚函数表。 typedef void(*Fun)(void); Base b; Fun pFun = NULL; ...
题目下面函数原型中,()声明了fun为纯虚函数。 A. void fun()=0; B. virtual void fun()=0; C. virtual void fun(); D. virtual void fun(){}; 相关知识点: 试题来源: 解析 B.virtual void fun()=0; 反馈 收藏 ...
【单选题】下面函数原型声明中,()声明了fun为纯虚函数。A. void fun()=0;B. virtual void fun()=0;C. virtual void
百度试题 题目在下列函数原型中,( ) A. void fun()=0; B. virtual void fun()=0; C. virtual void fun(); D. virtual void fun(){ }; 相关知识点: 试题来源: 解析 B.virtual void fun()=0;
百度试题 题目A.void fun()=0;B.virtual void fun()=0;C.virtual void fun();D.virtual void fun(){}; 相关知识点: 试题来源: 解析 B