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语言 goto语句

    C语言 goto语句使用攻略 1. 简介 在C语言中,goto语句是一种控制跳转语句,用于直接跳转到指定的标识符位置。虽然使用goto语句会增加程序的复杂性和混乱性,但是在某些情况下能够提高程序运行效率或使程序更加简洁明了。下面将介绍goto语句的使用方法和注意事项。 2. 语法 goto语句的语法如下: goto 标识符; 其中,标识符是指被定义为标签的语…

    C 2023年5月9日
    00
  • C语言传递指针的指针

    下面是详细讲解C语言传递指针的指针的使用攻略。 什么是指针的指针 指针的指针是一种特殊的指针类型。它指向的是一个指向指针的指针,通常用于传递指针的指针,以便在函数中对指针进行修改。 我们先来看看指针和指针的指针的定义: int *p; // 定义一个指向 int 类型的指针 int **pp; // 定义一个指向指针的指针 可以看到,指针的指针 pp 指向的…

    C 2023年5月9日
    00
  • C语言程序设计50例(经典收藏)

    “C语言程序设计50例(经典收藏)”是一本经典的编程书籍,旨在通过50个经典的C语言程序设计例子,让读者提高编程水平。本书包含了基础及进阶语言知识和常用数据结构的实现等内容,是提高编程技能的好教材。 以下是该书的完整攻略: 一、书籍概述 “C语言程序设计50例(经典收藏)”是一本C语言编程经典书籍,一共有50个程序例子,每个例子都对应着一种编程思路,适合初学…

    C 2023年5月23日
    00
  • C 强制类型转换

    C 强制类型转换(Type Casting 或 Type Conversion)是将一种数据类型的值转换为另一种数据类型的过程。C 语言中有 4 种强制类型转换的方式,分别为: (type) expression (type) variable type(expression) type(variable) 其中,第一种和第三种方式是一致的,第二种和第四种方…

    C 2023年5月10日
    00
  • 基于C语言实现高级通讯录的示例代码

    【攻略】基于C语言实现高级通讯录的示例代码 简述 本示例代码基于C语言实现了一个高级通讯录,具备添加联系人、查找联系人、删除联系人等功能,可以灵活调用。代码具有可读性强、简洁明了、易于修改的特点。 准备 在开始实现高级通讯录之前,需要安装C语言编译器,并具备一定的编程能力和语言基础。同时,还需要对通讯录具有清晰的逻辑思路和设计规划。 实现过程 1.创建通讯录…

    C 2023年5月30日
    00
  • JSON解析和XML解析区别对比

    下面我将详细讲解“JSON解析和XML解析区别对比”的完整攻略。 1. 什么是JSON和XML 在介绍JSON和XML解析的区别之前,我们先来了解一下什么是JSON和XML。 1.1 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON数据在传递过程中,可以简单地转换成JavaScript对象,因此J…

    C 2023年5月23日
    00
  • C++11实现简易定时器的示例代码

    下面是关于“C++11实现简易定时器的示例代码”的完整攻略。 标题 C++11实现简易定时器的示例代码 简介 在开发事件驱动或多线程程序时,经常需要一种定时器来控制任务的执行时间。本篇攻略将介绍如何使用C++11编写一个简易的定时器,以此来满足我们在各种场景中的需求。 本攻略将包含两个实例展示如何使用简易定时器,读者可以通过这两个实例学习如何将其应用于自己的…

    C 2023年5月22日
    00
  • IIS解析json的配置方法汇总

    当使用IIS托管网站时,如果需要让网站支持解析输入的json数据,需要对IIS进行相应的配置。以下是配置IIS解析json数据的具体步骤: 步骤一:安装ASP.NET Core Module 在配置IIS支持json数据解析之前,我们需要确保系统中已安装了ASP.NET Core Module。可以通过以下步骤进行安装: 打开服务器管理器,在左侧导航栏选择“…

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