
◆博主名称:少司府
欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆
⭐数据结构系列个人专栏:
⭐编程基础训练系列个人专栏:
⭐名不显时心不朽,再挑灯火看文章
目录
[1.1 类的定义的格式](#1.1 类的定义的格式)
[1.2 访问限定符](#1.2 访问限定符)
[1.3 类域](#1.3 类域)
[2.1 实例化的概念](#2.1 实例化的概念)
[2.2 对象大小](#2.2 对象大小)
一、类的定义
1.1 类的定义的格式
1)、class为定义类的关键字,{ }中为类的主体,类体中内容为类的成员:类中的变量称为类的属性或成员变量,类中的函数称为类的方法或成员函数。
2)、为了区分成员变量,一般习惯在成员变量前加上一个特殊标识,如 _
3)、C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级为类
4)、定义在类面的成员函数默认为inline
cpp
#include <iostream>
class Date
{
int _year;
int _month;
int _day;
void Print()
{
std::cout << _year << ' ' << _month << ' ' << _day << std::endl;
}
}
1.2 访问限定符
1)、C++一种实现封装的方式,用类将对象的属性与方法结合在一起,让对象更加完善,通过访问限定符选择性将其接口提供给用户使用
2)、public修饰的成员在类外可以++直接被访问++;protected和private不能
3)、访问权限从该限定符出现开始到下一个限定符出现为止
4)、class定义的成员没有被访问限定符修饰时,默认为private;struct的默认为public

cpp
class Stack //Stack既是类名也是其类型
{
public:
void Push(int x)
{
//...
}
private:
int _val;
}
int main()
{
Stack st; // 创建一个Stack类的对象
st.Push(1);
return 0;
}
1.3 类域
类定义了一个新的作用域,在类外定义成员时,需使用 :: 作用域操作符指明成员属于哪个类域。
cpp
class Date{
public :
Init(int year,int month,int day);
private:
int _year; // 只是声明,没有开空间
int _month;
int _day;
}
void Date::Init(int year,int month,int day){
_year=year;
_month=month;
_day=day;
}
二、实例化
2.1 实例化的概念
1)、用类类型在物理内存中创建对象的过程,称为类实例化出对象
2)、类是对象进行一种抽象描述 ,是一个模型一样的东西,限定了类有那些成员变量,这些成员变量只是声明,没有分配空间,只有实例化出对象时才会分配空间。

3)、成员函数不存放在对象里面
2.2 对象大小
1)、第一个成员在结构体偏移量为0的地址处
2)、其他成员变量要对其到某个数字(对齐数)的整数倍的地址处
3)、对齐数=编译器默认的对齐数与该成员大小的较小值
4)、VS的默认对齐数是8
5)、结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐数取最小)的整数倍
6)、如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大对齐数的整数倍,结构体整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍
7)、没有成员变量的类,其对象大小是1

三、this指针
编译器编译后,类的成员函数默认会在形参第一个位置,增加一个当前类型的指针,叫做this指针。
cpp
void Init(Date* const this,int year,int month,int day);
类的成员函数访问成员变量,本质是通过this指针访问的。
cpp
// this->_year=year;
C++规定不能在实参和形参的位置显示地写this(编译器会自己处理),但可以在函数体内使用this指针。


本期的分享就到这里,如果觉得博主的文章比较对胃口的话,可以点一个小小的关注~
您的三连是我持续更新的动力~