主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

C++ 面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

C++ 高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

C++ 类和对象


上一章 下一章

一、C++ 编程的主要目的

C++ 编程的主要目的是给 C 语言增加面向对象的特性,类是 C++ 支持面向对象编程的核心特征,通常被称为用户定义的类型。

类用于指定对象的形式,它将数据表示和操作该数据的方法结合成一个整洁的包。类中的数据和函数被称为类的成员。

二、C++ 类定义

当你定义一个类时,你定义了一种数据类型的蓝图。这实际上并没有定义任何数据,但它确实定义了类名的意义,即,该类的对象将包含什么内容以及可以在该对象上执行什么操作。

类定义以关键字 class 开头,后跟类名;类体包含在一对花括号中。类定义之后必须跟着一个分号或声明列表。例如,我们使用关键字 class 定义了 Box 数据类型如下:

class Box {
   public:
      double length;   // 长方体的长度
      double breadth;  // 长方体的宽度
      double height;   // 长方体的高度
};

关键字 public 确定了紧跟其后的类成员的访问属性。公共成员可以从类外部的任何地方访问,只要该类对象处于作用域内。你也可以将类的成员指定为私有的或受保护的,我们将在下一节讨论。

三、定义 C++ 对象

类提供了对象的蓝图,因此基本上,对象是从类创建的。我们声明类的对象的方式与声明基本类型变量的方式完全相同。以下语句声明了两个类型为 Box 的对象:

Box Box1;          // 声明 Box1 为 Box 类型
Box Box2;          // 声明 Box2 为 Box 类型

对象 Box1 和 Box2 都会有自己的数据成员副本。

四、访问数据成员

类的对象的公共数据成员可以使用直接成员访问运算符 (.) 来访问。让我们尝试以下示例以澄清这一点:

#include <iostream>

using namespace std;

class Box {
   public:
      double length;   // 长方体的长度
      double breadth;  // 长方体的宽度
      double height;   // 长方体的高度
};

int main() {
   Box Box1;        // 声明 Box1 为 Box 类型
   Box Box2;        // 声明 Box2 为 Box 类型
   double volume = 0.0;     // 在此处存储长方体的体积

   // 长方体 1 的规格
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // 长方体 2 的规格
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
   
   // 长方体 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "长方体 1 的体积 : " << volume << endl;

   // 长方体 2 的体积
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "长方体 2 的体积 : " << volume << endl;
   return 0;
}

当上述代码被编译并执行时,它会产生如下结果:

长方体 1 的体积 : 210
长方体 2 的体积 : 1560

值得注意的是,私有和受保护的成员不能直接使用直接成员访问运算符 (.) 访问。我们将在后续章节学习如何访问私有和受保护的成员。

五、类和对象详解

到目前为止,您已经了解了关于 C++ 类和对象的基本概念。还有更多与 C++ 类和对象相关的有趣概念,我们将在以下列出的小节中详细讨论:

  1. 类成员函数 类的成员函数是在类定义内部定义或原型化的函数,就像其他任何变量一样。

  2. 类访问修饰符 类成员可以被定义为公共(public)、私有(private)或受保护(protected)。默认情况下成员将被假定为私有的。

  3. 构造函数与析构函数 类构造函数是一个特殊的函数,在创建类的新对象时被调用。析构函数也是一个特殊函数,在创建的对象被删除时被调用。

  4. 复制构造函数 复制构造函数是一种构造函数,它通过初始化一个对象来创建对象,该对象是之前创建的同一类的对象。

  5. 友元函数 友元函数被允许完全访问类的私有和受保护成员。

  6. 内联函数 使用内联函数时,编译器试图在函数调用的位置展开函数体内的代码。

  7. this 指针 每个对象都有一个特殊的指针 this,它指向对象本身。

  8. 指向 C++ 类的指针 指向类的指针的定义方式与指向结构体的指针完全相同。事实上,类实际上是包含函数的结构体。

  9. 类的静态成员 类的数据成员和函数成员都可以声明为静态(static)。

上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图