行业知识
【C++】类和对象(一)
2026-10-22 04:11:43
来源:互联网转载
前言:在前面���们带大家初步步入了C++,让大家大概知道了他的样子,那今天就可以说我们要正式步入C++的大门了,这一章内容的细节比较多各位学习的时候一定要仔细。
博主CSDN主页:卫卫卫的个人主页
专栏分类:高质量C++学习
代码仓库:卫卫周大胖的学习日记
关注博主和博主一起学习!一起努力!
目录标题
- 类和对象
- 什么是对象
- 什么是类
- 定义类的格式:
- 类的访问限定符
- 封装
- 类的作用域
- 类的实例化
- 类的对象的大小计算
- 对象的存储方式
- this指针
- this指针的引出
类和对象
C++中,类是一种自定义的数据类型,用于封装数据和相关的操作。对象是类的实例,通过实例化类来创建对象。
类包含了属性(成员变量)和方法(成员函数),用于描述对象的状态和行为。成员变量是类的数据成员,用于存储对象的数据;成员函数是类的操作成员,用于实现对象的行为。
什么是对象
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题,而在C++中C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成,通俗的理解C语言好比送外卖我们需要关注如何下单如何拿,而C++只需要关注如何点外卖。
什么是类
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;
定义类的格式:
class 类的名称{//类体:成员变量--属性 成员函数---功能}现在以C++方式实现,会发现struct中也可以定义函数,但在C++中类的定义通过关键字class来实现。以下是一个简单的类的定义示例:
- 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
class Date//C++中的定义方式{public://限定符 void Init(int year,int month,int day) { _year = year; _month = month; _day = day; } void Print() { cout int _year; int _month; int _day;};int main(){ Date dl;//定义类 dl.Init(2024, 1, 30);//在c++中引用类的函数可以直接和C语言一样加.即可 dl.Print(); return 0;} _year = year; _month = month; _day = day;}public: void Init(int year,int month,int day); void Print();private: int _year; int _month; int _day;};void Date::Init(int year, int month, int day)//这里需要指定Init是属于Date这个类域{ _year = year; _month = month; _day = day;}void Date::Print()//同理这里需要指定Print属于Date这个域{ cout Date dl; dl.Init(2024, 1, 30); dl.Print(); return 0;}public: void myMethod() { std::cout // 实例化类的对象 MyClass obj; // 调用类的方法 obj.myMethod(); return 0;}public:void PrintA(){ coutcout public: void Init(int year,int month,int day) { _year = year; _month = month; _day = day; } void Print() { cout Date d1; Date d2; d1.Init(2024, 1, 30); d2.Init(2025, 2, 32); d1.Print(); d2.Print(); return 0;}public: void Init(int year,int month,int day) { this-_year = year;//本质上是有一个this指针指向了成员变量 this-_month = month; this-_day = day; } void Print() { cout Date d1; Date d2; d1.Init(&d1,2024, 1, 30);//这里只是为了方便大家理解,才写的取地址,实际写的过程中不需要前面这&d1 d2.Init(&d2,2025, 2, 32); d1.Print(); d2.Print(); return 0;}public:void Print() {cout A* p = nullptr;p-Print();return 0;}public:void Print() {assert(NULL);cout A* p = nullptr;p-Print();return 0;}public:void PrintA() {cout A* p = nullptr;p-PrintA();return 0;}
- this指针的引出