1.类与对象
C++中将对象的类型称为类,类代表了某一批对象的共性和特性,生活中每一个实体都是对象,而类就是对对象的抽象。其实这与生活十分相似,比如生活中我们为了方便简介对所有事物进行了分类,这样方便我们进行记忆和管理。C++中也是一样,我们通过将一些对象进行抽象,就是将其共性找出写作一个类,而每个对象之所以不同就是因为它们在拥有这些共性时,也具备自己的特性。所以说对象是类的特。
2.访问限定符
类与结构体的区别就在于访问限定符的存在,结构体中的所有数据都可以被结构体外的任意函数调用可以看为所有数据都公有,这样就可以将很大程度上保护了私有数据,同时保证了自己的源码不会轻易被改变。
3.面向对象封装性
软件工程的一个基本原则就是将接口与实现,而封装性就是为了完成这一基本原则,这么做的好处还有如果想要扩充或想要修改类的功能只需修改类里面的部分,不用修改类外的部分,即当接口与实现分离时,只要类的接口没有改变,对私有实现的修改不会引起程序其他部分的修改。
4.对象的大小计算
关于对象的计算基本与C语言中相同,存在对齐的问题,而且如果类是一个空类,建立对象时依然会占用一个字符,因为每个对象是不同的,所以必须有一个地址来表明对象的不同。
5.类的四个默认成员函数
类的四个成员函数指的是,构造函数,析构函数,复制构造函数,及运算符的重载。构造函数时一种特殊的成员函数,与其他成员函数不同,不需要用户调用,而是在建立时自动调用。构造函数主要作用就是用来处理对象的初始化,还可以搭配参数初始化表对数据成员初始化。析构函数是与构造函数作用相反的函数,构造函数的作用是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新的对象使用。而且析构函数不能被重载。复制构造函数的作用就是从无到有地建立一个新对象,并使它与一个已有对象完全相同。一般情况下如果程序员没有写,编译系统会自动生成一个,但是存在许多问题,所以尽量自己写。运算符重载是一个非常实用的函数,它不仅增加了程序的可读性,还使用户更方便实现对数据的操作。
6.this指针
this指针的本质是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。举个例子:
Complex operator+(Complex &c2)
{
Complex c3;
c3._res = this->_res + c2._res;
c3._imz = this->_imz + c2._imz;
return c3;
};
以上代码是对一个复数类的加号的运算符重载其中就有this指针的存在,this指针代表的就是调用这个函数的对象即“对象3=对象1+对象2”中的对象1,而c3的存在就是防止对象1被改变,然后赋值给对象3。而运算符的重载来说上面的代码比较不容易解读,而如果写成下面的形式就比较好读了:
Complex operator+(&this,Complex &c2)
{
Complex c3;
c3._res = this->_res + c2._res;
c3._imz = this->_imz + c2._imz;
return c3;
};
从上面我们可以看出其实运算符的重载就相当于将调用函数的对象做为一个参数传入函数中进行操作。