学习虚函数和指针
开始学习C++ c#了,还是稍稍整理下,不然我脑袋就一直处于睡眠状态!
多态关键之处就是一切用指向基类的指针或引用来操作子对象
java没有指针,多态就是子类继承父类,父对象根据赋给它的子对象响应子对象的特性。
java可以通过实现接口,继承,实现多态
C++中,可以通过虚函数(目前我就知道这个)实现多态
class A{
public:
void fun(){ cout<<”fun A”<<endl;}
};
class B:public A{
public:
void fun(){ cout<<”fun B”<<endl;}
};
int main(){
A a;
B b;
a.fun();
b.fun();
}
分别输出:fun A,fun B
结论:自己的对象指向自己的方法
fun A,fun B
int main2(){
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->fun();
p2->fun();
}
分别输出:fun A,fun A
结论:p1 p2都是同一个指针类型,指向的fun函数都是A的fun
class A{
public:
virtual void fun(){ cout<<”fun A”<<endl;} //虚函数
};
class B:public A{
public:
void fun(){ cout<<”fun B”<<endl;}
};
分别输出:fun A,fun B
至于为啥要输出fun A,fun B可以参考虚函数的互动百科
纯虚函数
class A{
public:
virtual void fun();
};
相当于java中的abstract