LearnCpp 9.1——复合数据类型介绍

在第4.1课- 基本数据类型介绍中,我们介绍了基本数据类型,它们是 C++ 作为核心语言的一部分提供的基本数据类型。
到目前为止,我们已经在程序中大量使用了这些基本类型,尤其是int数据类型。尽管这些基本类型对于直接用途非常有用。但当我们开始做更复杂的事情时,它们并不能满足我们的全部需求。

#include <iostream>
int main()
{
    // 第一个分数
    int num1 {};
    int den1 {};

    // 第二个分数
    int num2 {};
    int den2 {};

    char ignore {};

    std::cout << "输入第一个分数: ";
    std::cin >> num1 >> ignore >> den1;

    std::cout << "输入第二个分数: ";
    std::cin >> num2 >> ignore >> den2;

    std::cout << "二个分数相乘: " << num1 * num2 << '/' << den1 * den2;

    return 0;
}

并运行该程序:

输入分数:1/2
输入分数:3/4
两个分数相乘:3/8

它为我们带来了一些挑战,需要我们加以改进。除了注释和它们在代码中的使用情况,没有什么迹象表明每个分子和分母对是相关的。其次,遵循DRY( Don’t Repeat Yourself )原则(——不要重复你自己. DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。)我们应该创建一个函数来处理用户输入分数(以及一些错误处理)。但是,函数只能返回一个值,那么我们如何将分子和分母返回给调用者呢?现在想象另一种情况,您正在编写一个需要保留员工 ID 列表的程序。你会怎么做?你可能尝试这样的事情:

int main()
{
    int id1 { 42 };
    int id2 { 57 };
    int id3 { 162 };
    // 等等
}

复合数据类型

幸运的是,C++ 支持第二种数据类型,称为compound data types. 复合数据类型。复合数据类型是可以从基本数据类型(或其他复合数据类型)构造的数据类型。每种复合数据类型也有其独特的属性。
正如我们将在本章和以后的章节中展示的那样,我们可以使用复合数据类型来优美地解决我们上面提出的所有挑战。
C++ supports the following compound types:

  • 函数:Functions

  • 数组:arrays

  • 指针类型:Pointer types
    指向对象的指针 Pointer to object
    函数指针 Pointer to function

  • 引用类型:Reference types
    左值引用:L-value references
    右值引用:R-value references

  • 枚举类型 Enumerated types:
    无界的枚举:Unscoped enumerations
    有界的枚举:Scoped enumerations

  • class类型:
    结构体Structs
    类Classes
    联合体Unions

您已经经常使用一种复合类型:函数。例如,考虑这个函数:

void doSomething(int x, double y)
{
}

这个函数的类型是void()(int, double)。忽略所有的括号,请注意,此类型由基本类型组成,使其成为复合类型。当然,函数也有自己的特殊行为(例如可调用)。因为这里要介绍的东西很多,所以我们将分三章来做。在本章中,我们将介绍一些更直接的复合类型,包括左值引用和指针。下一章,我们将介绍无界的枚举,有界的枚举,基本结构体.然后,在除此之外的章节中,我们将介绍类类型并深入研究一些更有用的array类型。这包括std::string(在第 4.13 课中介绍—— std::string 简介),它实际上是一个类类型!

Got your game face on? Let’s go!(看见你的游戏表情了吗?我们走。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值