类和对象
程序员文章站
2022-04-06 20:57:44
...
1:类和对象的相关概念
类(class/struct)是一种非基本的数据类型,包括数据(成员变量)和程序(成员函数),类的访问限定符有三种,私有(private)、保护(protected)、公有(public),通过给予成员变量和成员函数不同的访问限定符,达到限定对象访问的目的。类的访问限定符体现了面向对象的封装性。 一个类并没有分配实际的内存空间来储存它,只有当一个类实例化对象的时候,才给它分配成员变量大小的物理空间。
2:
六个默认成员函数:当类中没有写默认的成员函数时,系统会自动生成
构造函数
对象构造时,系统自动调用相应构造函数。构造函数可以重载。
class
{
public:
Date()//无参构造
{}
Date(int year,int month,int day)//带参构造
{}
Date(int year = 1,int month = 1,int day = 1)//全缺省构造
{}
Date(int year = 1,int month,int day)//半缺省构造
{}
};
拷贝构造函数
创建对象时使用同类对象来初始化,拷贝构造函数是特殊的构造函数
Date(const Date& d)
{}
注意:1.拷贝构造函数的参数必须使用引用传参,使用传值得方式会造成无穷递归调用。
2.拷贝构造函数其实是构造函数的重载。
析构函数
对象生命周期结束时,系统会自动调用析构函数。析构函数不是删除对象,只是做一些清理工作。
~Date()
{}
先定义的后析构,后定义的先析构:例如,先定义d1,再定义d2,析构的时候,先析构d2,再析构d1。
赋值运算符重载
赋值运算符重载是对一个已存在的对象进行拷贝赋值。
Date& operator=(const Date& d)
{
return *this;
}
返回的是引用,函数栈帧结束后,*this还存在,所以返回引用。
取地址运算符重载和const修饰的取地址运算符重载不太常用。
3:隐含的this指针
每个成员函数都有一个指针形参,它的名字是固定的,就是this指针。在对象调用成员函数时,编译器会对成员函数进行处理,对象地址做实参传给成员函数的第一个形参this指针。this指针是隐含的,我们不能给其添加定义,也不能在调用时传递地址给this指针。