C++进一步认识类与对象

C++进一步认识类与对象

类与对象是什么?

在 C++ 中,类是一种自定义的数据类型,它可以封装数据和函数。每个类都可以实例化出多个对象,这些对象都有共同的数据类型和函数行为,称为类的实例或对象。

类的定义

定义一个类,需要确定以下内容:

  • 类的名称
  • 类的数据成员
  • 类的成员函数

下面是一个简单的类的定义:

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

这个类名为Box,其中有三个数据成员:length、breadth、height,都是双精度浮点数。

类的访问修饰符

类的访问修饰符包括 public、private 和 protected,它们决定类的成员谁可以访问。

  • public:所有的成员函数和派生类的对象都可以访问它
  • private:只有该类的成员函数可以访问它。不能在该类外面访问该类的私有成员变量或私有成员函数
  • protected:只能通过派生类的对象来访问它

对象的定义

类定义后,需要实例化一个对象体现出类的特性。下面是一个对象的定义:

Box box1;

这个定义创建了一个名为 box1 的 Box 类型的对象。现在,可以给对象赋值:

box1.breadth = 5.0;
box1.height = 6.0;
box1.length = 7.0;

成员函数

成员函数是类定义中的函数,它们可以访问类的数据成员。下面是一个简单的成员函数:

class Box {
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度

      double getVolume() {
         return length * breadth * height;
      }
};

这个类定义了一个 getVolume() 函数,计算盒子的体积并返回结果。可以通过以下代码调用该函数:

Box box1, box2;
box1.length = 5.0;
box1.breadth = 6.0;
box1.height = 7.0;

// volume of box1
cout << "Box1 的体积:" << box1.getVolume() << endl;

示例1:复数类

下面是一个复数类的示例,类的私有成员有实部(real)和虚部(imag):

class Complex {
   private:
      int real;   // 实部
      int imag;   // 虚部
   public:
      Complex(int r=0, int i=0) { // 构造函数
         real = r;
         imag = i;
      }
      void setReal(int r) {
         real = r;
      }
      void setImag(int i) {
         imag = i;
      }
      void display() {
         cout << real << " + i" << imag << endl;
      }
      Complex operator+(Complex const &obj) { // 运算符重载
         Complex res;
         res.real = real + obj.real;
         res.imag = imag + obj.imag;
         return res;
      }
};

以上代码定义了 Complex 类,有两个数据成员 real 和 imag,还定义了构造函数、三个成员函数和一个运算符重载函数。

现在,可以创建 Complex 类型的对象:

Complex c1(2, 3), c2(4, 5), c3;
c3 = c1 + c2;
c3.display();

可以看到,c3 是 c1 和 c2 相加的结果。

示例2:人员信息类

下面是一个人员信息类的示例,类的私有成员有姓名、年龄、性别和电话:

class Person {
   private:
      string name;   // 名称
      int age;       // 年龄
      char sex;      // 性别
      string phone;  // 电话
   public:
      Person(string n, int a, char s, string p) { // 构造函数
         name = n;
         age = a;
         sex = s;
         phone = p;
      }
      void display() {
         cout << "姓名:" << name << endl;
         cout << "年龄:" << age << endl;
         cout << "性别:" << sex << endl;
         cout << "电话:" << phone << endl;
      }
};

以上代码定义了 Person 类,有四个私有成员变量,还定义了一个构造函数和一个成员函数 display(),用于输出人员信息。

现在,可以创建 Person 类型的对象:

Person p("Tom", 18, 'M', "13888888888");
p.display();

可以看到,创建的对象 p 包含了人员的基本信息,并通过 display() 函数输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++进一步认识类与对象 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 一篇文章带你了解C++多态的实现原理

    一篇文章带你了解C++多态的实现原理 概述 多态是面向对象编程中的一个重要概念,它使不同类型的对象对同一消息作出响应。C++支持多态,实现方式包括虚函数和函数指针等。本文主要讲解C++多态的实现原理和使用方法。 代码示例 我们通过一个简单的代码示例来演示多态的实现。 案例描述 假设有一个基类Animal,有两个派生类Dog和Cat,它们都实现了一个虚函数ma…

    C 2023年5月22日
    00
  • C语言指针基础知识实例讲解

    下面我就来详细讲解一下“C语言指针基础知识实例讲解”的完整攻略。 知识点概述 首先,我们需要了解一下指针是什么。指针是一个变量,其值为另一个变量的地址。换句话说,指针是一种存储另一个变量地址的变量。在C语言中,指针的数据类型在其前面加上*号。 我们还需要知道如何声明和初始化指针。指针的声明与其他变量类似,只需在变量名前面加上*号。例如,int *p表示p是一…

    C 2023年5月23日
    00
  • C语言处理未初始化指针

    下面我会详细讲解“C语言处理未初始化指针”的完整使用攻略。 1. 什么是未初始化指针 从语言层面上来说,C语言中的指针默认是一个垃圾值或者未初始化的值,即该指针变量中存储的是一个未知的地址,而这个地址是随机的。 在实际编程中,如果程序员不小心对未初始化指针进行操作,就可能会导致错误和不可预见的行为。因此,在使用指针之前,程序员必须显式地对指针进行初始化操作。…

    C 2023年5月9日
    00
  • 详解C标准库堆内存函数

    详解C标准库堆内存函数 C标准库提供了多个函数来操作内存堆。其中,堆分配函数可以动态地分配内存空间,并返回指向堆中该内存区域的指针。堆管理函数可以释放先前分配的堆内存空间,或者调整已分配空间的大小。 堆分配函数: 1. malloc函数 malloc函数(Memory ALLOCation)可以动态地分配指定数量的字节空间,并返回该空间的首地址。函数原型如下…

    C 2023年5月24日
    00
  • C语言深入探究程序的编译之预处理

    关于C语言深入探究程序的编译之预处理,我可以为您提供一份详细的攻略。如下所示: C语言深入探究程序的编译之预处理 什么是预处理 在C语言中,预处理就是一个在编译过程中的特殊阶段,它会在实际的编译之前,对源代码进行一些列的宏替换、条件编译、头文件包含等操作,以生成最终的源代码,供编译器进行编译。 预处理的过程 预处理的过程大致可以分为以下步骤: 删除所有的注释…

    C 2023年5月30日
    00
  • Win10无法开机0xc0000225错误代码解决方法

    当我们开机时,有时可能会遇到Win10无法开机的问题,面对这种情况,我们需要对问题进行诊断,找到错误原因并解决问题。其中,“Win10无法开机0xc0000225错误代码解决方法”就是我们需要掌握的一种处理方法。 什么是0xc0000225错误代码? 0xc0000225错误代码是指系统启动时,所需要加载的winload.exe文件出现错误或缺失引起的错误。…

    C 2023年5月23日
    00
  • C++实现STL容器的示例

    实现STL容器需要了解C++的模板和泛型编程。具体实现步骤如下: 1.先定义STL容器的基本结构,以vector为例,定义一个模板类Vector,将模板参数T作为类型参数: template <typename T> class Vector { private: T* data; size_t size; size_t capacity; pu…

    C 2023年5月23日
    00
  • C 存储类

    C 语言中的存储类指的是控制变量存储方式和生命周期的关键字。局部变量、全局变量和静态变量等都可以使用存储类关键字进行控制,以达到更加灵活的变量存储方式和更加符合实际需要的生命周期等效果。通常使用的存储类关键字有 auto、register、static、extern 四种。 下面我们来详细介绍一下“C 存储类”的使用攻略。 auto 存储类 auto 存储类…

    C 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部