C++ 继承 构造 析构函数

1.构造函数

功能:当我们想要做到同时定义一个结构体变量,并且对结构体成员进行赋值时,我们可以使用构造函数。(实现定义结构体变量的同时,赋值结构体里面的成员)

构造函数的特性:

1.与类同名

2.没有返回值

3.创建对象时执行

4.主要用于初始化

5.可以有多个,称为重载,但是要有区别(参数的个数,类型,与返回类型无关)

6.编译器没要求必须提供(可有可无,如果定义了无参数的构造函数,那么就会自动运行)

2.析构函数

情景条件:当我们构造函数中如果出现了malloc分配空间的情况,那么我们就需要考虑空间的释放,但是在什么时候释放最合理?答案是在构造函数使用完毕的的时候释放最合理。因此我们需要析构函数~Person。

功能:在构造函数使用完毕后,实现析构函数中的功能,比如构造函数中分配了空间,析构函数就可以在构造函数使用完毕后释放空间。

析构函数特性:

1.只能有一个析构函数

2.不能带任何参数

3.不能带返回值

4.主要用于清理工作

5.编译器不要求必须提供(使用完毕后无需调用,编译器自动执行析构函数)

3.继承

1.什么是继承

继承就是数据的复制,从反汇编来看,继承和不继承对于成员的复制都是一样的)

2.为什么要用继承

可以减少代码的重复,提高书写

要点:

1.Person被称为父类或者基类

2.Teacher,Student被称为子类或者派生类

3.t,s被称为对象或者实例

4.可以用父类指针指向子类(但是有时由于父类子类的指针宽度不同,因此父类的指针并不能完全访问所有成员,同理,使用子类访问父类就可以做到完全访问)

3.多层继承

定义:多层继承就是z继承y,y继承了x,因此,z继承了y和x,但是y

和x同时又存在继承和被继承的关系

1.指针的访问

同理可知,子类对象的指针可以完全访问父类,“孙类”对象的指针可以完全访问父类和“爷类”,

由于宽度的原因,因此从“高辈”访问“低辈”时会出现宽度不够的问题,同样,“低辈”,访问“高辈”时也要担心宽度过多越界访问的问题。

2.多层结构体成员名字重合时

由实验可知,在多层结构体成员出现名字重复时,结构体的宽度还是不变,这就表示,在平时给结构体成员赋值的时候指明同叫“‘a”的成员属于哪个结构体,即如图:

4.多重继承

定义:多重继承区别于多层继承在于,多层继承是结构体之间类似于嵌套关系,但是多重继承是属于“一子多父”(从C语言的逻辑理解),一个结构体同时包含两个父类(先写谁,就先继承谁)

微软不建议的继承方式(容易出错)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值