类和对象知识点

内存分区模型:
代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量静态变量以及常量
栈区:由编译器自动分配释放,存放函数的参数值和局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统收回

class和struct的区别在于默认访问权限不同,struct默认权限为公共;class默认权限为私有

浅拷贝可能带来的问题:堆区的内存重复释
解决办法:自己实现拷贝构造函数

静态成员分为:
静态成员变量:所有对象共享一份数据;在编译阶段分配内存;类内声明,类外初始化
静态成员函数:所有对象共享一个函数;静态成员函数只能访问静态成员变量

空对象占用内存空间为1

常函数:
成员函数后加const的函数成为常函数;
常函数内不可修改成员属性;
成员属性声明时加关键字mutable后则可以修改
常对象只能调用常函数

友元:
友元的目的是让一个函数或者类访问另一个类中的私有成员

运算符重载:
对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型

引用可以是void类型吗?
(1)void类型没有分配内存,而引用必须是另一个固定内存变量的别名,所以不能指向void。
(2)引用只是一个别名,是已有变量的别名,而void类型是空类型,是没有分配内存的。所以引用不能是void类型。
(3)引用为对象起了另外的一个名字,该对象是已经存在的对象,引用必须初始化,有类型。

双目运算符优先于位移或运算符,左移运算符<<是双目运算符,功能是将数的二进制左移若干位,且高位丢弃,低位补0。

继承的好处:减少重复的代码
class A:pubic B;
A称为子类或者派生类
B称为父类或者基类
继承方式有三种:
公共继承,保护继承,私有继承
父类中所有非静态成员属性都会被子类继承下去
继承中的构造和析构顺序:1.先构造父类,再构造子类2.析构的顺序与构造相反
当子类与父类出现同名的成员时,如何通过子类对象访问到子类或父类中同名的数据?
1.访问子类同名成员,直接访问即可
2.访问父类同名成员,需要加作用域

封装,继承,多态是C++面向对象三大特征
多态分为两类:
.静态多态:函数重载和运算符重载属于静态多态,复用函数名
.动态多态:派生类和虚函数实现运行时多态
静态多态和动态多态的区别:
静态多态的函数地址早绑定–编译阶段确定函数地址
动态多态的函数地址晚绑定–运行阶段确定函数地址
动态多态满足条件:
1.有继承关系 2.子类重写父类的虚函数
多态使用条件:父类指针或引用指向子类对象
纯虚函数:只要有一个纯虚函数,这个类就称为抽象类
抽象类特点:1,无法实例化对象 2,抽象类的子类必须要重写父类中的纯虚函数,否则也属于抽象类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值