C++学习笔记4-----类的继承第二篇

1。公有继承中的多态公有继承:

多态就是同一个方法有多种行为,多种实现,它的行为随上下文的不同而不同。比如父类中有一个方法func(),子类中又重新定义了一个func(),虽然名字一样,但是函数行为不一样。

2。实现多态的方法有两种:1)在子类中重新定义;2)在父类中申明虚方法,然后在子类中重新定义

3。一开始我有点困惑,既然在子类中重新定义方法就可以实现多态,那为什么还要有虚方法的存在呢?

 

1)这个例子假设父类没有定义虚方法-------

fatherClass f("f",12,13);

childClass c("c",112,113);

fatherClass & b1=f;

fatherClass  & b2=c;

b1.func();//调用的是fatherClass 的func()

b2.func();//调用的是fatherClass 的func()

 

2)这个例子假设父类定义了虚方法func()-------

fatherClass f("f",12,13);

childClass c("c",112,113);

fatherClass & b1=f;

fatherClass  & b2=c;

b1.func();//调用的是fatherClass 的func()

b2.func();//调用的是childClass 的func()

 

以上的例子总结如下:

其实,虚方法是这样的:关键字virtual.如果没有虚方法,则根据指针或者引用的类型来调用方法;但是有了虚方法后呢,根据指针或者引用指向的类型来选择调用谁的方法(父类的还是子类的)。

4。一般来说,如果父类中定义了虚方法,那就应该再定义一个虚拟析构函数。

比如,假设childClass继承了fatherClass,并且添加了新的成员char *,该成员指向new 分配的内存。

fatherClass *ps=new childClass;

......

delete ps;//

这样只会释放childClass对象中由fatherClass 部分指向的内存,而不会释放char *指向的内存。

所以定义一个virtual ~fatherClass(){},这样就会先调用~childClass(),再调用~fatherClass().

5.友元函数不能是虚函数,因为友元函数不是类的成员函数。

6。如果子类重新定义了父类的方法,则应该保持原形一致。

7,如果父类的声明被重载了,则应该在子类中重新定义所有的父类版本;

 

8。protected:

个人认为其实protected介于public和private之间。首先,在一个类的派生类中,protected跟Public成员一样可以被访问;其次,对于外部世界来说,protected和private一样被隐藏。

9。要明白和熟悉继承机制的使用并不是那么容易的,我觉得需要大量的实际练习,类的设计很复杂,加油~~~~~~~你懂么?

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值