类和对象上篇(通俗易懂)


前言

C语言面向过程,采用的是调用函数来逐步解决问题。C++面向对象,通过各个对象之间的交互来解决问题。


一、类的基本概念:

1.类的引入:

C语言中,我们都知道struct结构体中可以定义变量。但是在C++中,结构体中不仅可以定义变量还可以定义函数。

struct Stack
{
    
    
	void Init(int capacity = 5)
	{
    
    
		_array = (int*)malloc(sizeof(int) * capacity);
		if (nullptr == _array)
		{
    
    
			perror("malloc申请空间失败");
			exit(-1);
		}
		_capacity = capacity;
		_top = 0;
	}
	int* _array;
	int _capacity;
	int _top;
};

2.类的定义:

C++更喜欢使用class来定义类:

class ClassName//类名
{
    
    
// 类体
}; 
  1. class为定义类的关键字
  2. ClassName为类名
  3. 类体中包含成员变量和成员函数

类的两种定义方法:
在这里插入图片描述
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。

3.类的访问限定符和封装:

先来谈谈什么是封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

对类使用访问限定符可以更好的使用类,通过访问选择性将其接口提供给用户使用,而封装也让类安全性更高。

类的访问限定符有三种:

  1. public(公开)
  2. protected(保护)
  3. private(私有)

说明:

  • public修饰的成员可以直接被访问。
  • private和protected修饰的成员在类外不能被直接访问(这点上两者类似)。
  • 访问权限作用域从当前访问限定符到下一个访问限定符结束。
  • 如果后面没有访问限定符了,作用域一直到类尾
  • class默认访问权限为private,struct默认为public

4.类的实例化:

用类创建对象的过程就叫类的实例化。

  1. 类是对对象的描述,类就好比一张房子的建造图纸,而对象是实际建造出来的房子
  2. 类可以实例化多个对象,且对象占有实际的物理空间。
  3. 类是没有空间的,实例化的对象才有空间

二、this指针:

1.this指针的引出:

看如下代码:s1和s2两个对象分别调用Init函数,函数是怎么区分它们的呢?

int main()
{
    
    
	Stack s1;
	Stack s2;
	s1.Init();
	s2.Init();
	return 0;
}

C++使用this指针解决了这个问题,在调用函数时,编译器会自动将对象的地址传参,同时函数内部使用this指针接受,this指针类型是*const,this本身不可被修改,这些都是编译器自动实现的,不需要用户手动传递。
在这里插入图片描述

2.this指针的特性:

  1. this指针类型为* const,本身不可修改
  2. 只能在成员函数中使用
  3. this指针实际上是成员函数的形参,并非存在对象中
  4. this指针无需用户手动传递,编译器会自动实现

总结

以上就是今天讲的类和对象上的内容,主要讲解了类和对象的基本概念以及this指针,希望刚刚阅读本篇博客的你有所帮助!

猜你喜欢

转载自blog.csdn.net/weixin_61661271/article/details/126454376