- C++ 基础
- C++ 首页
- C++ 概述
- C++ 环境设置
- C++ 基本语法
- C++ 注释
- C++ Hello World
- C++ 省略命名空间
- C++ 常量/字面量
- C++ 关键字
- C++ 标识符
- C++ 数据类型
- C++ 数值数据类型
- C++ 字符数据类型
- C++ 布尔数据类型
- C++ 变量类型
- C++ 变量作用域
- C++ 多个变量
- C++ 基本输入/输出
- C++ 修饰符类型
- C++ 存储类
- C++ 运算符
- C++ 数字
- C++ 枚举
- C++ 引用
- C++ 日期和时间
- C++ 控制语句
- C++ 决策
- C++ if 语句
- C++ if else 语句
- C++ 嵌套 if 语句
- C++ switch 语句
- C++ 嵌套 switch 语句
- C++ 循环类型
- C++ while 循环
- C++ for 循环
- C++ do while 循环
- C++ foreach 循环
- C++ 嵌套循环
- C++ break 语句
- C++ continue 语句
- C++ goto 语句
- C++ 构造函数
- C++ 构造函数和析构函数
- C++ 复制构造函数
- C++ 文件处理
- C++ 文件和流
- C++ 从文件中读取
C++ 类和对象
C++ 编程的主要目的是为 C 编程语言添加面向对象特性,而类是支持面向对象编程的 C++ 的核心特性,通常称为用户定义类型。
类用于指定对象的格式,它将数据表示和操纵该数据的方法组合到一个简洁的包中。类中的数据和函数称为类的成员。
C++ 类定义
定义类时,定义的是数据类型的蓝图。这实际上并没有定义任何数据,但它确实定义了类名的含义,即类的对象将包含什么以及对这样的对象可以执行哪些操作。
类定义以关键字`class`后跟类名开头;类体用一对大括号括起来。类定义后面必须跟分号或声明列表。例如,我们使用关键字`class`定义了 Box 数据类型,如下所示:
class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
关键字`public`确定其后类成员的访问属性。公共成员可以在类的对象作用域内的任何地方从类外部访问。您还可以将类的成员指定为`private`或`protected`,我们将在一个小节中讨论。
定义 C++ 对象
类为对象提供蓝图,因此基本上对象是从类创建的。我们声明类的对象的方式与声明基本类型的变量完全相同。以下语句声明了 Box 类的两个对象:
Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box
Box1 和 Box2 两个对象都将拥有自己的一份数据成员副本。
访问数据成员
可以使用直接成员访问运算符 (.) 访问类的对象的公共数据成员。让我们尝试以下示例来说明:
#include <iostream> using namespace std; class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box }; int main() { Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box double volume = 0.0; // Store the volume of a box here // box 1 specification Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // box 2 specification Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // volume of box 1 volume = Box1.height * Box1.length * Box1.breadth; cout << "Volume of Box1 : " << volume <<endl; // volume of box 2 volume = Box2.height * Box2.length * Box2.breadth; cout << "Volume of Box2 : " << volume <<endl; return 0; }
编译并执行上述代码后,将产生以下结果:
Volume of Box1 : 210 Volume of Box2 : 1560
需要注意的是,不能使用直接成员访问运算符 (.) 直接访问私有和受保护的成员。我们将学习如何访问私有和受保护的成员。
详细介绍类和对象
到目前为止,您已经对 C++ 类和对象有了非常基本的了解。还有更多关于 C++ 类和对象的有趣概念,我们将在下面列出的各个小节中讨论:
序号 | 概念和描述 |
---|---|
1 | 类成员函数
类的成员函数是在类定义中定义或声明其原型的函数,就像任何其他变量一样。 |
2 | 类访问修饰符
类成员可以定义为 public、private 或 protected。默认情况下,成员将被假定为 private。 |
3 | 构造函数和析构函数
类的构造函数是类中的一种特殊函数,在创建类的新的对象时调用。析构函数也是一个特殊函数,在创建的对象被删除时调用。 |
4 | 复制构造函数
复制构造函数是一个构造函数,它通过使用先前创建的相同类的对象来初始化对象来创建对象。 |
5 | 友元函数
友元函数被允许完全访问类的私有和受保护成员。 |
6 | 内联函数
使用内联函数,编译器会尝试在函数调用的位置扩展函数体中的代码。 |
7 | this 指针
每个对象都有一个特殊的指针`this`,它指向对象本身。 |
8 | 指向 C++ 类的指针
指向类的指针与指向结构体的指针完全相同。实际上,类实际上只是一个包含函数的结构体。 |
9 | 类的静态成员
类的成员变量和成员函数都可以声明为静态的。 |