C++类和对象基础详解

C++类和对象基础详解

什么是类和对象

C++中类指的是一种自定义的数据类型,可以包含数据(成员变量)以及方法(成员函数)。对象则是根据类定义的实例。类和对象是面向对象编程的核心概念。

如何定义类

定义类的基本语法如下:

class 类名 {
  public:    //访问限定符
    成员变量(属性)
    成员函数(方法)
};

其中,访问限定符有三种:public、protected、private,代表成员变量和成员函数的访问权限。

示例代码如下:

class Person {
  public:
    string name;    //此处使用了C++的string类
    int age;
    void sayHello() {
        cout << "Hello, my name is " << name << ". I'm " << age << " years old." << endl;
    }
};   //注意要以分号结尾

上述代码定义了一个名为Person的类,包含了name和age两个成员变量,以及一个成员函数sayHello。

如何创建对象

创建对象的语法为:

类名 对象名;

示例代码如下:

Person person1;   //创建了一个Person类的对象,名为person1

对象创建后,可以通过“.”访问其中的成员变量和成员函数。示例代码如下:

person1.name = "Tom";
person1.age = 22;
person1.sayHello();    //输出 "Hello, my name is Tom. I'm 22 years old."

类的构造函数和析构函数

类中还可以定义构造函数和析构函数,用于初始化和销毁对象时执行相应的操作。构造函数和析构函数分别以类名开头、以~符号和类名开头命名。

示例代码如下:

class Person {
  public:
    string name;
    int age;
    Person() {    //构造函数
        cout << "A new person is created." << endl;
    }
    ~Person() {    //析构函数
        cout << "A person is destroyed." << endl;
    }
    void sayHello() {
        cout << "Hello, my name is " << name << ". I'm " << age << " years old." << endl;
    }
};

示例说明

示例1:

#include <iostream>
using namespace std;

class Rectangle {
  public:
    int width;
    int height;
    Rectangle(int w, int h) {   //构造函数
        width = w;
        height = h;
        cout << "A rectangle is created." << endl;
    }
    ~Rectangle() {   //析构函数
        cout << "A rectangle is destroyed." << endl;
    }
    int getArea() {
        return width * height;
    }
};

int main() {
  Rectangle rect1(4, 5);
  cout << "The area of rect1 is: " << rect1.getArea() << endl;

  Rectangle rect2(3, 6);
  cout << "The area of rect2 is: " << rect2.getArea() << endl;

  return 0;
}

上述代码定义了一个Rectangle类,包含width、height两个成员变量以及getArea方法。在main函数中创建了两个Rectangle对象,分别计算了其面积并输出。注意,每次创建和销毁对象时会分别调用构造函数和析构函数。

示例2:

#include <iostream>
using namespace std;

class Date {
  public:
    int year;
    int month;
    int day;
    Date(int y, int m, int d) {   //构造函数
        year = y;
        month = m;
        day = d;
    }
    bool isEqual(Date date) {
        if (year == date.year && month == date.month && day == date.day) {
            return true;
        }
        else {
            return false;
        }
    }
};

int main() {
  Date date1(2022, 8, 5);
  Date date2(2022, 8, 5);
  if (date1.isEqual(date2)) {
      cout << "date1 and date2 are equal." << endl;
  }
  else {
      cout << "date1 and date2 are not equal." << endl;
  }

  Date date3(2021, 8, 5);
  if (date1.isEqual(date3)) {
      cout << "date1 and date3 are equal." << endl;
  }
  else {
      cout << "date1 and date3 are not equal." << endl;
  }

  return 0;
}

上述代码定义了一个Date类,包含year、month、day三个成员变量,以及isEqual方法。在main函数中创建了三个Date对象,分别比较它们是否相等。注意,isEqual方法的参数是一个Date对象,即通过对象进行传递。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++类和对象基础详解 - Python技术站

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

相关文章

  • 华硕X450C系列笔记本怎么拆机清灰?

    下面是关于华硕X450C系列笔记本拆机清灰的完整攻略: 1. 准备工具和环境 在进行拆机清灰之前,我们需要准备好以下工具和环境: 一个适合拆开笔记本电脑的螺丝刀套装 一块软布或清洁刷子 一瓶压缩气罐或吸尘器 一个安静、平坦的操作环境,最好在桌子上放置一块软质材料,例如毯子或厚垫子,以防止刮伤电脑。 2. 确认拆机方式 在进行拆机清灰之前,你需要确定你的笔记本…

    C 2023年5月22日
    00
  • C++实现学生信息管理系统

    C++ 实现学生信息管理系统的攻略可以分为以下几个步骤: 1. 界面设计 学生信息管理系统需要一个良好的界面来提供用户友好的使用体验。可以使用如 Qt 等界面框架,或者使用C++标准库提供的基本控制台界面来实现。 2. 数据存储与处理 信息管理系统需要能够存储和处理学生信息,可以选择使用文件、数据库或者数据结构等来完成。 2.1 文件存储 使用文件存储数据是…

    C 2023年5月23日
    00
  • C++ std::thread 使用方法

    C++ std::thread 使用方法 std::thread是C++11标准库中提供的线程库组件。使用该类可以在C++程序中创建线程并管理它们的生命周期。下面详细介绍使用 std::thread 来创建和控制线程的方法。 基本使用方法 std::thread 的使用非常简单,下面是一个创建和启动一个新线程的例子: #include <iostrea…

    C 2023年5月22日
    00
  • VC++实现文件与应用程序关联的方法(注册表修改)

    在VC++中,我们可以实现文件与应用程序的关联,使得用户在打开这类文件时,默认使用该应用程序打开。这个过程需要通过修改注册表来实现,下面就是详细的攻略: 第一步:创建应用程序 首先,我们需要创建一个VC++的应用程序。创建好应用程序后,将其编译生成.exe程序。 第二步:修改注册表 在开始修改注册表之前,请先备份你的注册表。这是个安全建议。下面是修改的过程:…

    C 2023年5月23日
    00
  • 浅谈JSON中stringify 函数、toJosn函数和parse函数

    JSON 是一种文本格式,主要用来作为前后端数据交互的标准格式。在使用 JSON 的时候,经常需要使用 JSON 的三个核心函数:JSON.stringify()、JSON.parse()、toJSON(),这三个函数分别用于将 JavaScript 数据转换为 JSON 字符串或者反向转换,或自定义数据格式。 JSON.stringify() JSON.s…

    C 2023年5月23日
    00
  • C语言的进制转换及算法实现教程

    C语言的进制转换及算法实现教程 概述 在计算机科学和编程中,进制转换是一个重要的概念,它涉及到二进制、十进制、八进制与十六进制之间的相互转换。C语言作为一种非常流行和强大的编程语言,也支持这些进制之间的转换。 本教程将向您介绍C语言中进制转换的基本概念和算法,以及如何在代码中实现这些转换过程。 进制转换的基本概念 二进制:由0和1组成,是计算机中最基本的数字…

    C 2023年5月23日
    00
  • Win11怎么修改c盘用户名?Win11更改C盘user用户名教程

    下面我为您详细讲解“Win11怎么修改C盘用户名?Win11更改C盘user用户名教程”。 在Win11中,更改C盘的用户名可以通过以下步骤实现: 第一步:打开计算机管理 右键点击“此电脑”图标,选择“管理” 或者按下“Win+X”,选择“计算机管理” 第二步:编辑本地用户和组 展开“本地用户和组” 选择“用户” 在右侧窗口中,找到您要修改的用户名,右键点击…

    C 2023年5月23日
    00
  • MySQL数据库恢复(使用mysqlbinlog命令)

    MySQL数据库恢复是重要的运维工作之一。使用mysqlbinlog命令恢复MySQL数据库是一种常见方法。以下是使用mysqlbinlog命令恢复MySQL数据库的完整攻略: 1.备份原始的MySQL数据 在恢复MySQL数据库之前,必须确保已经备份了原始的MySQL数据,以便在恢复失败时能够恢复到原始状态。一般情况下,可以使用mysqldump命令进行备…

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