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

C++ 八种常见类类型

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

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

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

1.具体类 (Concrete Class)

我们可以创建一个具体类来表示汽车。具体类Car可能会包含成员变量如brand(品牌)、model(型号)和成员函数如start()(启动)、accelerate()(加速)等。9h528资讯网——每日最新资讯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;}

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

2.抽象类 (Abstract Class)

我们可以创建一个抽象类Shape来表示形状,其中包含一个纯虚函数calculateArea()用于计算面积。9h528资讯网——每日最新资讯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;}

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

3.接口类 (Interface Class)

接口类可以用来定义一组接口,例如Drawable接口可以定义绘制图形的方法。9h528资讯网——每日最新资讯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;}

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

4.节点类 (Node Class)

节点类可以用于实现链表数据结构。以下是一个简单的节点类的示例。9h528资讯网——每日最新资讯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)

支持类可以包含一些辅助函数,例如数学计算。以下是一个支持类的示例,用于计算阶乘。9h528资讯网——每日最新资讯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来表示公司中的雇员。9h528资讯网——每日最新资讯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,用于反转字符串。9h528资讯网——每日最新资讯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++标准库中的一个容器类,用于存储动态数组。9h528资讯网——每日最新资讯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注解的智慧重试艺术

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 摸鱼心法第一章——和配置文件说拜拜

    摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 三言两语说透柯里化和反柯里化

    三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 阿里大调整

    阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
Top