为什么要传入指针呢?
在flymatch函数中为什么要传入指针呢?
在flymatch函数中为什么要传入指针呢?
2016-01-08
首先flymatch函数不仅可以传入指针,还可以传入实例化对象。
1、课程中为什么要传入flyable指针呢,是基于基类的引用和指针可以引用子类的对象这一原则,也就是说flyable *p 这个指针既可以引用bird也可以引用plan,这样做的好处后面会说到。
2、那为什么不用flyable p 呢,是因为flyable是纯虚函数,flyable p就是实例化一个flyable的对象p。显而易见,纯虚函数是不能被实例化的,所以flyable p 是非法的。
3、那可以传入什么样的实例化对象呢,bird和plan的实例化对象都可以。但是一旦这样做了就会有一个限制,如果函数中声明的是一个bird的对象,那么这个函数就不能再调用plan的对象了,因为bird和plan是两个完全不同的类,所以函数只能接受bird的对象而不能接受plan的对象,就像一个人如果是男人,那么他肯定不可能是女人。如果想处理plan的对象,那么只能再创建另外一个函数来处理了。
4、事实都不是绝对的,人妖的出现证明了一个人即可以是男人也可以是女人,而flayable *p的出现呢,就是为了让函数即可以调用bird的对象又可以调用plan的对象以及其它flyable的子类对象,这种编程灵活性是所有编程人员所崇尚的。
讲解完毕,如果帮到你请给个好评吧!媳妇非得要那个慕课君抱枕,拼命赚积分ing。。。。。。
举报