文章目录
📙前言
📙1、面向过程与面向对象的初步认识
📙2、类的引入
struct Stack
{
int* a;
int top;
int capacity;
};
//函数只能写在外面
void StackInit(Stack* st)
{
//...
}
struct Stack
{
int* a;
int top;
int capacity;
void Init();
};
📙3、类的定义
class className
{
//类体:由成员函数和成员变量组成
};
//人
class Person
{
public:
//打印信息
void print()
{
cout << (*_name) << "-" << (*_sex) << "-" << _age << endl;
}
private:
char* _name;//名字
char* _sex;//性别
int _age;//年龄
};
class Date
{
public:
void Init(int year, int month, int day)
{
//这样你怎么分清楚哪个是类的成员变量,哪个是形参?
year = year;
month = month;
day = day;
}
private:
int year;
int month;
int day;
};
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
📙4、类的访问限定符
📙5、类的作用域
class Date
{
//{}内,为类的作用域
private:
int _year;
int _month;
int _day;
};
//{}外,不是类的作用域
class Date
{
public:
void 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;
}
📙6、类的实例化
class Date
{
public:
void Init(int year, int month, int day);
private:
int _year;
int _month;
int _day;
};
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
//这样就是类的实例化
//C++把d1叫作对象
Date d1;
return 0;
}
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
//一个类可以实例化多个对象
Date d1;
Date d2;
Date d3;
Date d4;
Date d5;
return 0;
}
📙7、类的对象模型
📋7.1、类对象的存储方式
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
//空类又是多少字节呢?
class Stack
{};
📙8、this指针
📋8.1、this指针的引出
#include<iostream>
using namespace std;
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
void Print()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
Date d2;
d1.Init(2024, 5, 1);
d2.Init(2024, 5, 5);
d1.Print();
d2.Print();
return 0;
}
📋8.2、this指针的特性
Date* const this
#include<iostream>
using namespace std;
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
//语法上的转换 void Print() ==> void Print(Date* this)
void Print()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;
Date d2;
d1.Init(2024, 5, 1);
d2.Init(2024, 5, 5);
d1.Print();//语法上的转换d1.Print(); ==> d1.Print(&d1);
d2.Print();//d2.Print(); ==> d2.Print(&d2);
return 0;
}