本篇文章与大家浅谈一下C嘎嘎的类与对象知识点
类的定义
关键字:class
语法格式:
class 类名
{
};//这里的分号不能少
此外,class有三个属性分别是private、public、protected,这三个属性是干啥的,相信大家通过这三个单词的中文意思应该也能知道。那么我们来看一下下面的这个例子。
从上面的图片中,我们可以看到整个类分为了两个部分:公共部分和私有部分,私有部分中声明变量,公有部分定义函数以及构造函数等等
构造函数
特点
无参构造函数
类名()
{
变量 = 初始值;
}
有参构造函数
类名(类型 变量)
{
(类中私有化的变量) 变量 = 变量(类名括号内的变量);
}
全缺省有参构造函数
类名(类型 变量 = 初始值)
{
(类中私有化的变量) 变量 = 变量(类名括号内的变量);
}
析构函数
1. 析构函数名是在类名前加上字符~。eg.~stack()
2. ⽆参数⽆返回值。(这⾥跟构造类似,也不需要加void)
3. ⼀个类只能有⼀个析构函数。若未显式定义,系统会⾃动⽣成默认的析构函数。
4. 对象⽣命周期结束时,系统会⾃动调⽤析构函数。
5. 跟构造函数类似,我们不写编译器⾃动⽣成的析构函数对内置类型成员不做处理,⾃定类型成员会 调⽤他的析构函数。
拷贝构造函数
Date (const Date& d)
{
_year = d. year;
运算符重载
1. 概念:当运算符被⽤于类类型的对象时,C++语⾔允许我们通过运算符重载的形式指定新的含义。
赋值运算符
赋值运算符重载是一个默认成员函数,用于完成两个已经存在的对象直接拷贝的赋值
拷贝构造用于一个对象拷贝初始化给另一个创建的对象类名
形式: 对象名(前对象名);或 类名 对象名 = 前对象名
拷贝赋值构造语法格式:
类名 operator = (const Date& 别名)
{
变量名 = 对象名.成员变量名;
return *this
}
或
类名& operator = (const Date& 别名)
{
变量名 = 对象名.成员变量名;
return *this
}
隐形的指针——this指针
this指针隐藏的位置
1. 类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针
2. 类的成员函数中访问成员变量,本质都是通过this指针访问的
3. C++规定不能在实参和形参的位置显⽰的写this指针(编译时编译器会处理),但是可以在函数体内显⽰使⽤this指针。
4. 被const修饰的成员函数
取地址运算符重载
const修饰成员函数
const作用:和c语言指针时的const作用一样,都是用于缩小权限,注意这里使用了const后权限只有缩小不存在放大