C++学习——类和对象

mac2025-06-03  37

类:是一种实体的抽象类型

类的引入

在C++面向对象编程(OPP)中,类即为通过对实体属性、行为等特征的抽象产生的一种实体抽象类型。将其属性定义为成员变量,其行为定义为成员方法(成员函数),通过对类的实例化产生各种各样对象进而实现面向对象的编程思想。

类的定义

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

class为定义类的关键字,className为类的名字,{ }中为类的主体。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为成员方法(成员函数)。

类的两种定义方式:
声明和定义全部放在类体中。 声明放在.h文件中,类的定义放在.cpp文件中 注意:在类外声明成员函数时,一定要加上类的作用域,否则编译器将其视为普通函数处理,访问不到类的成员。

面向对象的特征之一:封装

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

类的访问限定符

C++实现封装的方式:

C++与C语言不同的一点是:在C语言使用struct关键字定义的结构体自定义类型其成员默认是公有成员,没有访问权限的限制;而C++的类其成员均默认为是私有的,更好的保护了数据的安全性,为了使用户能够更好的访问类的成员,C++则使用访问限定符来实现对于类成员的访问。 而C++实现封装的方式即为:用类将对象的属性与方法结合在一起,让对象更加完善,通过访问权限选择性的将其接口提供给外部用户使用。 说明:

public修饰的成员在类外可以直接被访问。protected和private修饰的成员在类外不能被直接访问。访问权限作用域从该访问限定符出现的位置到下一个访问限定符出现时为止。访问限定符只在编译时有用,当数据映射到内存后,没有访问限定符上的区别。

类的实例化

用类类型创建对象的过程,称为类的实例化。 说明: 1. 类只是一个模型,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储类。 2. 一个类可以实例化出多个对象,这些对象共享一套成员方法,实例化出的对象,占用实际的物理空间,存储类成员变量。 3. 一个类的大小,实际就是该类中“成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类

this指针

C++通过类的实例化创建对象,并且一个类可以实例化多个对象,同一个类的多个对象还共享一套成员方法,当有对象调用某成员方法时,编译器如何区分时哪一个对象调的呢?此时,就引入了this指针这个概念。 C++编译器给每个“成员函数”(除构造函数)增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访 问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

this指针的特性:

1. this指针的类型:类类型*const; 2. 只能在成员函数内部使用 3. this指针本质上其实是一个成员函数的参数,是对象调用该成员函数时,将对象地址作为实参传递给this形参,所以对象不存储this指针。 4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过exc寄存器自动传递,不需要用户传递。 5. this指针存储在栈上

最新回复(0)