菜鸟求解一小程序
#include <iostream.h>
Class base
{public:
virtual void f1(){cout<<"f1 function of base"<<endl;}
virtual void f2(){cout<<"f2 function of base"<<endl;}
virtual void f3(){cout<<"f3 function of base"<<endl;}
void f4(){cout<<"f4 function of base"}
Class derive:public base
{void f1(){cout<<"f1 function of derive"<<endl;}
void f2(intx){cout<<"f2 function of derive"<<endl;}
void f4(){cout<<"f4 function of detive"<<endl;}
void main()
{base *p;
derive obj2;
p=&obj2;
p->f1();
p->f2();
p->f4();
}
请各位高手详细解析一下,不胜感激
[解决办法]
哪里不会了
[解决办法]
这个代码你能写出来还需要解释么?多态嘛,要不熟悉仔细看一下书,或者编代码测试
[解决办法]
你的代码错误比较多,下面是给你的代码一一修改:
#include <iostream.h>//这个库文件没有后缀.h,它是C++中的头文件,因此去掉.husing namespace std;// 像cout、endl是在命名空间std中定义的,在使用它们时,需要进行using声明,则需要添加这一句Class base//关键字Class在C++中这个单词是小写,C++是区分大小写的,因此这里的关键字class改为小写{public:virtual void f1(){cout<<"f1 function of base"<<endl;}virtual void f2(){cout<<"f2 function of base"<<endl;}virtual void f3(){cout<<"f3 function of base"<<endl;}void f4(){cout<<"f4 function of base"}};//定义自己的类时,在定义类结束后,需要加个分号,而且类的定义体需要用大括号括住Class derive:public base{void f1(){cout<<"f1 function of derive"<<endl;}void f2(intx){cout<<"f2 function of derive"<<endl;}void f4(){cout<<"f4 function of detive"<<endl;}};//定义自己的类时,在定义类结束后,需要加个分号,而且类的定义体需要用大括号括住void main(){base *p;derive obj2;p=&obj2;p->f1();//f1是虚函数,p是基类指针,而且p指向了派生类对象,因此在调用时发生动态绑定, //调用的是派生类中的虚函数f1,输出为:f1 function of derivep->f2();//f2在基类是虚函数,而派生类并没有重写这个函数,因此当用基类指针进行调用时,调用的是 //基类中的函数f2,输出为:f2 function of basep->f4();//f4在基类是非需函数,因此不存在动态绑定,当用基类指针调用时,调用的是基类中的函数f4, //输出为:cout<<"f4 function of base}
[解决办法]