当前位置:首页 > 科技  > 软件

C++ 八种常见类类型

来源: 责编: 时间:2024-04-02 17:18:09 245观看
导读大部分面向对象开发工作中都应用了以下部分或者全部的基本类别的类,每种都有其特定的用途和特征。1.具体类 (Concrete Class)我们可以创建一个具体类来表示汽车。具体类Car可能会包含成员变量如brand(品牌)、model(型号)和

大部分面向对象开发工作中都应用了以下部分或者全部的基本类别的类,每种都有其特定的用途和特征。Rmx28资讯网——每日最新资讯28at.com

Rmx28资讯网——每日最新资讯28at.com

1.具体类 (Concrete Class)

我们可以创建一个具体类来表示汽车。具体类Car可能会包含成员变量如brand(品牌)、model(型号)和成员函数如start()(启动)、accelerate()(加速)等。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>#include <string>class Car {private:    std::string brand;    std::string model;public:    Car(std::string brand, std::string model) : brand(brand), model(model) {}    void start() {        std::cout << "Starting the " << brand << " " << model << ".../n";    }    void accelerate() {        std::cout << "Accelerating the " << brand << " " << model << ".../n";    }};int main() {    Car myCar("Toyota", "Camry");    myCar.start();    myCar.accelerate();    return 0;}

Rmx28资讯网——每日最新资讯28at.com

2.抽象类 (Abstract Class)

我们可以创建一个抽象类Shape来表示形状,其中包含一个纯虚函数calculateArea()用于计算面积。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>class Shape {public:    virtual double calculateArea() const = 0;};class Circle : public Shape {private:    double radius;public:    Circle(double radius) : radius(radius) {}    double calculateArea() const override {        return 3.14 * radius * radius;    }};int main() {    Circle circle(5);    std::cout << "Area of the circle: " << circle.calculateArea() << std::endl;    return 0;}

Rmx28资讯网——每日最新资讯28at.com

3.接口类 (Interface Class)

接口类可以用来定义一组接口,例如Drawable接口可以定义绘制图形的方法。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>class Drawable {public:    virtual void draw() const = 0;};class Circle : public Drawable {public:    void draw() const override {        std::cout << "Drawing a circle/n";    }};int main() {    Circle circle;    circle.draw();    return 0;}

Rmx28资讯网——每日最新资讯28at.com

4.节点类 (Node Class)

节点类可以用于实现链表数据结构。以下是一个简单的节点类的示例。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>template<typename T>class Node {public:    T data;    Node<T>* next;    Node(T data) : data(data), next(nullptr) {}};int main() {    Node<int>* node1 = new Node<int>(1);    Node<int>* node2 = new Node<int>(2);    node1->next = node2;    std::cout << "Node 1 data: " << node1->data << std::endl;    std::cout << "Node 2 data: " << node1->next->data << std::endl;    delete node1;    delete node2;    return 0;}

5.支持类 (Support Class)

支持类可以包含一些辅助函数,例如数学计算。以下是一个支持类的示例,用于计算阶乘。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>class MathUtils {public:    static int factorial(int n) {        if (n == 0)            return 1;        return n * factorial(n - 1);    }};int main() {    int result = MathUtils::factorial(5);    std::cout << "Factorial of 5: " << result << std::endl;    return 0;}

6.域类 (Domain Class)

域类用于表示特定领域中的实体或概念。例如,我们可以创建一个域类Employee来表示公司中的雇员。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>#include <string>class Employee {private:    std::string name;    int employeeId;public:    Employee(std::string name, int employeeId) : name(name), employeeId(employeeId) {}    void display() const {        std::cout << "Name: " << name << ", Employee ID: " << employeeId << std::endl;    }};int main() {    Employee emp("John Doe", 12345);    emp.display();    return 0;}

7.应用类 (Utility Class)

应用类可以提供一组通用的功能或工具函数。以下是一个简单的应用类StringUtils,用于反转字符串。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>#include <string>class StringUtils {public:    static std::string reverseString(const std::string& str) {        std::string reversedStr = str;        std::reverse(reversedStr.begin(), reversedStr.end());        return reversedStr;    }};int main() {    std::string original = "hello";    std::string reversed = StringUtils::reverseString(original);    std::cout << "Reversed string: " << reversed << std::endl;    return 0;}

8.集合和容器类 (Collection and Container Class)

集合和容器类用于存储和管理多个元素的集合。例如,std::vector是C++标准库中的一个容器类,用于存储动态数组。Rmx28资讯网——每日最新资讯28at.com

#include <iostream>#include <vector>int main() {    std::vector<int> numbers = {1, 2, 3, 4, 5};    std::cout << "Elements in the vector:";    for (int num : numbers) {        std::cout << " " << num;    }    std::cout << std::endl;    return 0;}

本文链接:http://www.28at.com/showinfo-26-80835-0.htmlC++ 八种常见类类型

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一文理解Python的全局解释器锁(GIL)

下一篇: 决胜分布式:揭秘Spring框架@Retry注解的智慧重试艺术

标签:
  • 热门焦点
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之&ldquo;想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!&rdquo;曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
Top