Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384019
  • 博文数量: 138
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1620
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-10 16:55
个人简介

当你比别人优秀一点点,别人会嫉妒你。当你比别人优秀很多,别人会羡慕你。

文章分类

全部博文(138)

文章存档

2016年(2)

2015年(2)

2014年(15)

2013年(119)

我的朋友

分类: C/C++

2013-10-28 21:34:16

    继承本身是承接父类的属性方法,同时添加自己的独有的属性和方法。 当有需要的时候,她就可以通过函数重载的方式来从新定义基类的方法。
    函数的实现:基类和子类都有自己的函数的实现。
    构造函数:继承,基类和子类都有各自的构造函数。


    多态,虚函数这一些,其实是为了迎合一个需求:使用基类的地址,去操作子类的成员。只有用地址的时候,猜可以,因为使用地址,编译器无法知道具体的对象的类型,所以无法。如果是使用对象本身,而不是使用指针。那就没必要了。

    多态,本身是继承的延续,继承的时候,如果我们要使用基类,就使用基类来定义对象,然后用这个对象来操作这个基类。
    如果我们想要子类,那么们就用子类来定义对象。但是如果我们想使用基类的地址,来操作子类,那么就需要用到多态。这个仅仅是为编程的方便。   
    这个时候,我们需要把相关的函数定义为虚函数。 
   函数的实现: 虚函数再基类和子类中都有各自的实现,
    构造函数:含有虚函数的类本质上也是继承,基类和子类都有各自的构造函数。


    总结一下,虚函数只是继承的一种特殊情况。
    如果是普通的继承,基类A,函数func   子类B 函数func(重载)
    我们定义一个A,调用函数A.func 执行的是A.func
    定义一个B,调用函数B.func,执行的是B.func


    如果是定义类一个B,然后用A的地址来访问他,比如函数test (A a){a.func} 传递了一个参数B b。那么真正执行的,还是A.func


    
    







      ===============================================================================
    如果说一个基类只是提供一个接口,而不希望使用者创建一个你提供的类的实现。那么,就需要抽象类。只要把类的至少一个函数,设定为纯虚函数,就可以了。


   所以对于我的抽象类基类来说,
    纯虚函数,不需要实现。
    构造函数,不需要实现,构造函数的存在当然还是必须的,因为需要为类设置虚函数表。我们就让编译器使用默认构造函数就好了。

    而对于基于我这个抽象类的子类来说,我需要实现虚类类子

====================================================================
抽象类的纯虚函数,本身是虚函数,其意义和普通的虚函数一样,是为了可以使用基类的指针统一调用子类。


因为抽象类,存在的意义就是为各个不同的子类,创造一个统一的接口,但是子类的具体实现是不同的。抽象类本身不会也不能创建一个对象出来。
因此,我们不去实现抽象类的纯虚函数,或者实现为,打印出错误信息。

这边只看抽象类的纯虚函数,因为抽象类存在的意义就是创造一个接口。有普通的函数和普通虚函数的意义都不大。

所以我的抽象类,纯虚函数,都实现为打印错误信息即可。







阅读(612) | 评论(0) | 转发(0) |
0

上一篇:自问自答

下一篇:C++的异常处理

给主人留下些什么吧!~~