C++基础编程的学习3

nullptr关键字

在C++11之前,空指针通常用NULL0表示。然而,这些表示方法存在类型安全问题。C++11引入了nullptr关键字,它提供了一个明确的、类型安全的空指针值。

Lambda表达式

Lambda表达式是C++11引入的一种便捷的匿名函数定义方式。当Lambda表达式没有捕获外部变量时,它可以被用作函数指针。Lambda表达式提供了一种快速定义函数对象的方法,特别是在需要临时使用的小函数时。

没捕获的情况下,这个表达式可以充当函数的指针

函数指针举例:

内存管理

C++提供了两种内存分配方式:newmalloc,以及它们的释放方式:deletefree

  • new会自动调用对象的构造函数,而malloc不会。
  • 相对地,delete会调用对象的析构函数,而free不会。
  • 使用malloc分配的内存需要强制类型转换,而new不需要。
  • mallocfree是C语言中的函数,而newdelete是C++的关键字。

类和继承

类是C++中实现封装和数据抽象的基本单位。继承是类与类之间的一种关系,它允许一个类(派生类)继承另一个类(基类)的属性和方法。

继承类型

  • 单继承:派生类只继承一个基类。

  • 多继承:派生类可以继承多个基类。尽管多继承提供了更大的灵活性,但通常推荐使用单继承,以避免复杂的继承关系带来的问题。

Base是直接基类

Base0是间接基类

派生类的生成过程

  1. 吸收基类成员:派生类自动拥有来自基类的所有属性和方法,但不包括构造函数和析构函数。
  2. 改造基类成员:如果派生类中有与基类同名的成员或方法,基类的相应成员或方法会被隐藏。这种情况下,如果尝试访问被隐藏的基类成员,将会导致编译错误。

这个情况下基类的fn会被隐藏

这样使用将会报错基类fn函数被隐藏了只有派生类的

这个情况是隐藏并不是重载

重载是要在同一作用域下

这个时候派生类字节大小为4

这个时候则为8

但是调用的时候是调用派生类的

  3.添加基类成员:派生类可以添加新的成员或方法,以扩展基类的功能。

类型兼容规则

类型兼容规则指出,在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。这意味着一个派生类对象可以隐含地转换为基类对象。然而,需要注意的是,这种转换遵循的是静态类型转换,调用的将是基类的成员函数。

这个时候调用的是基类的fn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值