欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++类与对象

程序员文章站 2024-03-15 17:50:18
...

面向对象:对象是指类的实例,将对象作为程序的基本单元,将程序和数据封装在其中,以提高软件的重用性,灵活性和扩展性。
面向对象的三大特性:封装、继承、多态

类是现实世界对实体的抽象类别的映射,它是一个模型,定义出一个类并没有分配实际的内存空间来存储它。每个对象的大小为类中所有成员变量的大小之和,并遵循内存对齐规则。

内存对齐的原因:
内存的访问不是任意位置访问的,只能读取CPU字长整数倍处的地址,这是硬件限制,内存对齐是一种以空间换时间的做法。

定义一个类

class A{
    char ch;
    double d;
};

读取变量d的内容,假设CPU字长4字节
C++类与对象
遵循内存对齐规则读取变量内容时,能减少内存读取次数,以此来提高效率

内存对齐规则:
1.第一个成员在与结构体变量偏移量为0的地址处。
2.其他成员变量要对齐到min(编译器默认的对齐数,该成员大小)的整数倍的地址处。
3.结构体总大小为最大对其数的整数倍。
4.如果嵌套了结构体,嵌套的结构体对齐到自己的最大对其数的整数倍处,结构体的整体大小就是所有最大对齐数的整数倍。

空类的大小:1字节,用来占位,表示自己存在过~

类的默认成员函数:
构造函数
构造函数在定义对象时自动执行一次,用来对成员变量初始化。
特征:
1.函数名与类名相同。
2.无返回值。
3.对象构造时系统自动调用对应的构造函数。
4.构造函数可以重载。
5.构造函数可以在类中定义,也可以在类外定义。
6.如果类定义中没有给出构造函数,则编译器自动产生一个无参的构造函数,但只要定义了一个构造函数,系统就不会默认生成缺省的构造函数。
拷贝构造函数
拷贝构造函数在创建对象时使用同类对象来进行初始化,拷贝构造函数是特殊的构造函数。
特征:
1.拷贝构造函数是构造函数的一个重载。
2.拷贝构造函数的参数必须使用引用传参,使用传值的方式会引发无穷递归调用。
3.若未显示定义,系统会默认生成缺省的拷贝构造函数。
析构函数
析构函数用来在对象生命周期结束时,完成清理工作。
特征:
1.析构函数在类名前加~。
2.析构函数无参数无返回值。
3.一个类有且只有一个析构函数,若未缺省定义,会自动生成。
4.对象声明周期结束时,编译器自动调用析构函数。
5.析构函数体内不是删除对象,而是做一些清理工作。
赋值运算符重载
赋值运算符重载是对一个已存在的对象进行拷贝赋值。

相关标签: 类与对象