C++类&对象
前言
从本节内容开始,我将分享一些关于C++面向对象的知识,这部分的内容,需要你具备前面的知识,如果你还有不会的或者说不熟悉的地方,请点击这里重新温习一下,废话不多说,直接进入正题吧!
C++ 类&对象
C++ 是在 C 语言基础上增加了面向对象编程的功能,其中 类 是 C++ 的核心概念。你可以把类理解成一种自定义的“蓝图”或者“模板”,用来描述一类对象的特性(数据)和能力(功能)。类里面的变量叫“成员变量”,负责保存数据,而函数叫“成员函数”,用来定义这些对象可以做的事情。有了类,就能很方便地创建多个“长得一样”的对象。
C++ 类定义
在 C++ 中,类(class) 是一种用来组织数据和行为的结构。定义一个类就像是在创建一个蓝图,告诉程序我们要描述一个什么样的东西(数据)以及它可以做些什么(操作)。理解类的定义会让你轻松上手面向对象编程。
如何定义一个类?
关键字
class:
使用class关键字告诉程序我们要定义一个类。类名:
给类起一个有意义的名字,就像给变量取名一样。花括号
{}:
用{}包围住类的内容,内容包括:- 成员变量(属性):用来存储对象的特性或数据。
- 成员函数(方法):用来描述对象的行为或操作。
访问权限(
public):
在类中,数据和函数可以有不同的访问权限,比如public、private和protected。其中:- **
public**:外部代码可以访问这些成员。 - **
private**:外部代码无法直接访问这些成员(稍后会详细说明)。
- **
举个例子:定义一个盒子类
以下是一个简单的类定义,用来描述一个盒子:
1 | class Box { |
细节解析:
类名
Box:- 这个类名表示我们要定义的是“盒子”。
- 以后我们可以用这个类创建具体的“盒子对象”。
public访问权限:- 在
public下定义的变量是公开的,也就是说,外部代码可以直接访问这些变量。 - 如果不写
public,默认情况下,类的成员是private,外部代码将无法直接访问它们。
- 在
成员变量:
length、breadth和height是盒子的属性,它们描述了盒子的长度、宽度和高度。- 它们的数据类型是
double,表示这些属性可以存储带小数的数字。
类是蓝图,对象是实物
定义类之后,你可以通过类来创建实际的对象。比如,Box 类是一个蓝图,而对象就是你用这个蓝图制作出的具体“盒子”:
1 | Box myBox; // 创建一个盒子对象 |
通过这种方式,myBox 成为了一个具体的盒子,它有了自己的长、宽、高。
总结:类的作用
- 定义属性:类中包含的变量(如
length、breadth、height)用于存储对象的数据。 - 定义行为:类中还可以包含函数,描述对象可以完成哪些动作(这里暂时未涉及函数)。
- 灵活性:通过类,你可以方便地创建多个对象,每个对象可以有自己独特的数据。
类的核心是将数据和操作封装在一起,使得程序更加模块化和易于维护。
C++定义对象
在 C++ 中,对象(object) 是类的具体实现。类就像一张设计图,而对象就是根据设计图实际“生产”出来的东西。通过对象,我们可以操作和使用类中定义的属性和方法。
下面,我们一步步来理解如何创建对象、如何操作对象的成员,以及如何通过实例加深理解。
1. 创建对象
要创建一个对象,就像声明一个变量一样简单。假设我们有一个类 Box,可以这样声明对象:
1 | Box Box1; // 创建一个类型为 Box 的对象 Box1 |
每个对象都有自己的独立数据。换句话说,Box1 和 Box2 是两个不同的盒子,它们可以有不同的长度、宽度和高度。
2. 访问对象的成员
直接访问公共成员
类的公共成员(public)可以通过 点操作符(.) 来访问和操作。例如:
1 | Box1.length = 6.0; // 设置 Box1 的长度为 6.0 |
通过成员函数访问成员
有时候,我们会用成员函数来设置和获取对象的属性。例如:
1 | Box1.set(6.0, 7.0, 5.0); // 调用 set 函数一次性设置 Box1 的长宽高 |
这种方式不仅简洁,还能让我们在函数中添加额外的逻辑,比如检查输入值是否合法。
3. 实例代码解析
下面是一个完整的例子,我们结合类和对象来计算多个盒子的体积。
代码:
1 |
|
输出结果:
1 | Box1 的体积:210 |
4. 细节说明
成员函数的作用
set()函数:用来一次性设置盒子的长度、宽度和高度。get()函数:用来计算盒子的体积。
这两个函数的好处是可以让代码更规范、更清晰,同时也能避免直接操作数据成员可能带来的错误。
为什么要用点操作符(.)?
点操作符 . 的作用是连接对象和它的成员(属性或函数)。例如:
Box1.length表示访问Box1的长度属性。Box3.get()表示调用Box3的get()函数。
关于访问权限:
- 公共成员(
public):- 例如
length、breadth、height,可以直接通过对象访问。
- 例如
- 私有成员(
private):- 私有成员不能直接访问,通常需要通过函数(如
set()和get())来间接操作。
- 私有成员不能直接访问,通常需要通过函数(如
5. 总结
- 对象是类的具体实例:
- 类是设计图,对象是根据设计图创建的实际东西。
- 访问对象的成员:
- 通过点操作符直接访问公共成员。
- 通过成员函数间接访问私有或公共成员。
- 使用成员函数的优势:
- 更加安全、规范,能够控制数据的合法性。
- 分离定义和实现:
- 在类中声明函数,在类外实现函数,有助于让代码结构更清晰。
类&对象详解
C++ 类与对象深入理解
C++ 的类和对象不仅包括我们之前学到的基础知识,还有许多高级概念。这些概念可以帮助我们更高效、更灵活地编写代码。下面是一些重要的类和对象相关概念的通俗解释和用途。
C++ 类与对象相关概念总结
| 概念 | 描述(通俗易懂的解释) |
|---|---|
| 类成员函数 | 类中的函数称为成员函数,它是用来操作类中数据的函数。它们就像工具,帮助你操作和处理类的属性,比如设置值或计算结果。 |
| 类访问修饰符 | 类的属性和函数可以设置为: - public:可以被外部直接访问。- private:只能在类内部使用,外部不能直接访问。- protected:继承时的特殊访问方式。 |
| 构造函数 & 析构函数 | 构造函数是在创建对象时自动调用的特殊函数,用于初始化对象的属性。 析构函数则是在对象被销毁时调用,用于清理资源。它们是一对让对象创建和销毁更方便的函数。 |
| 拷贝构造函数 | 拷贝构造函数用于用一个已有的对象来创建新的对象,就像“克隆”一样。比如将对象 A 的值赋给对象 B 时会调用拷贝构造函数。 |
| 友元函数 | 友元函数是类的“朋友”,它可以访问类的私有和受保护成员。虽然它不是类的成员,但它能帮助实现更复杂的操作。 |
| 内联函数 | 内联函数是编译器直接把函数代码插入到调用点,省去了函数调用的开销,适合用在短小的函数上。 |
| this 指针 | 每个对象都有一个特殊指针 this,它指向对象本身。通过 this 指针可以访问或操作当前对象的属性。 |
| 指向类的指针 | 类的指针就像指向结构体的指针一样。它允许你通过指针访问对象的属性和方法,适合处理动态创建的对象或需要共享对象的情况。 |
| 静态成员 | 静态成员属于整个类而不是某个对象。静态变量可以被所有对象共享,静态函数可以在没有对象的情况下调用。比如计数器、全局配置等。 |
深入理解概念:举例说明
1. 类成员函数
类的成员函数用于操作类的属性,例如设置值和获取值:
1 | class Box { |
2. 类访问修饰符
控制类成员的访问权限:
1 | class Box { |
3. 构造函数 & 析构函数
构造函数和析构函数会自动执行,无需手动调用:
1 | class Box { |
4. 拷贝构造函数
通过已有对象创建新对象:
1 | class Box { |
5. 静态成员
静态成员变量和函数属于整个类:
1 | class Box { |








