1,类定义
class为定义类的关键字,date为类的名字。{}为类的主体,{}里面的内容成为类成员。
类里面的变量成为成员变量。类中的函数成为成员变量。
class Date
{
public:
//成员函数
void Init(int year,int month,int day)
{
_year=year;
_month=month;
_day=day;
}
private:
//成员变量,在项目合作中为方便
//观察,成员变量会在变量前
//加特殊标识_。
int _year;
int _month;
int _day;
};
1.2访问限定符
C++中现有的访问限定符有三种:public,private,protected。
public修饰的成员在类以外可以被访问。
private和proteed是不能直接被访问的,两者目前的作用是一样的,在后续内容继承才能体现出来。
作用域:
访问权限作用域从该访问限定符出现的位置到下一个访问限定符前,如果后续没有访问限定符,作用域到}就结束
2,实例化
将类类型实例化在物理内存中,成为类型实例化出对象。
类是对象进行一种抽象描述,类似一张图纸,标明了哪里需要什么哪里有什么,而这些标明就是成员变量。在没有实例化前这些成员变量都是声明,没有分配空间。
3,内存对齐规则
第一个成员在与结构体偏移量为0的地址处
其他成员变量要对齐到最小对齐数变量的整数倍。
vs中默认的对齐数为8
结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。
4 this指针
如以下代码
在Date类里面有Init和Print两个成员变量,函数体中没有关于不同对象的区分,代码中实例化了d1和d2,C++会自动区分两个对象就是因为有this指针的存在,它会自动的指向对象。
类的成员函数默认会在形参的第一个位置增加一个当前类型的指针叫this指针
如:void Init(Date* const this,int year,int month,int day)
访问类的成员变量也是通过this指针完成的,this->_year=year;
#include<iostream>
using namespace std;
class Date
{
public:
//以下init里面包含了隐藏的this指针函数,即为Date* const this
// void Init(Date* const this, int year, int month, int day)
void Init(int year, int month, int day)
{
_year = year;
this->_month = month;
this->_day = day;
}
void Print()
{
cout << _year << "/" << _month << "/" << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
// Date类实例化出对象d1和d2
Date d1;
Date d2;
d1.Init(2024, 3, 31);
d1.Print();
d2.Init(2024, 7, 5);
d2.Print();
return 0;
}