【C++从练气到飞升】02---初识类与对象

慈云数据 2024-03-13 技术支持 53 0

 🎈个人主页:库库的里昂

✨收录专栏:C++从练气到飞升

🎉鸟欲高飞先振翅,人求上进先读书。

目录

⛳️推荐

一、面向过程和面向对象初步认识

二、类的引用

1. C语言

2. C++版

三、类的定义

类的两种定义方式:

四、类的访问限定符及封装

1. 类的访问限定符

2. 封装

五、类的作用

六、类的实例化

七、类对象模型

1. 计算类对象的大小

2. 结构体内存对齐规则

八、this指针

1. this指针的引出

2. this指针的特性

3. this指针存在哪里?

4. 经典面试题:this指针可以为空吗?--可以但要视情况而定


⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

一、面向过程和面向对象初步认识

  • C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

    • C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

      二、类的引用

      C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。

      比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数

      1. C语言版

      结构体中只能定义变量,并且声明栈类型的变量时,必须写全struct Stack。

      typedef int DataType;
      struct Stack
      {
      	DataType* _array;
      	size_t _capacity;
      	size_t _size;
      };
      struct Stack s;//声明一个结构体变量
      

      2. C++版

      C++中,struct结构体升级成了类,它里面不仅可定义变量,还可以定义函数,并且声明栈类型变量的时候,可以不加struct。声明的变量可以通过.去调用类里面的函数。

      #include
      using namespace std;
      //C++兼容C语言,结构用法可以继续使用
      //同时struct也升级成了类
      struct Stack
      {
      	//成员函数
      	void Init()
      	{
      		a = nullptr;
      		top = capacity = 0;
      	}
      	void Push(int x)
      	{
      		//...
      	}
      	//成员变量
      	int* a;
      	int top;
      	int capacity;
      };
      int main()
      {
      	Stack st2;//C语言是不允许这样定义结构体但是C++可以
      	st2.Init();//调用类里面的函数
      	st2.Push(1);
      	st2.Push(2);
      	st2.Push(3);
      	st2.Push(4);
      	return 0;
      }
      

      三、类的定义

      class className
      {
      	// 类体:由成员函数和成员变量组成
      };  // 一定要注意后面的分号
      

      class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
      类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

      类的两种定义方式:

      1. 声明和定义全部放在类体中

      //定义一个人的类
      class Person
      {
      public:
      	//成员函数——显示基本信息
      	void showInfo()
      	{
      		cout 
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon