C++ 中的 Struct 与 Typedef Struct 详解

在 C++ 中,INLINECODE9df67460 关键字用于定义结构体,而 INLINECODE9f07101e 关键字则用于为现有数据类型(如 INLINECODE987d35aa、INLINECODEc3f2472c)或用户自定义类型(如 INLINECODEdbcacca7、INLINECODE90d9945f、union)创建别名(即一个新的名称),从而赋予它们更具可读性的名字。

  • C 语言中,程序员通常使用 INLINECODEc1aca695 的形式,这是为了避免每次声明变量时都要重复书写 INLINECODEb26819da 关键字。
  • 而在 C++ 中,这并不是必须的。结构体定义后,它的名字本身就可以直接作为类型名使用。

C++ 中的 Struct(结构体)

  • struct 关键字定义了一种用户自定义的数据类型,它允许我们将多个变量(以及函数)组合在同一个名称之下。
  • 在 C++ 中,一旦我们声明了一个结构体,就可以直接使用它的名字作为类型,无需借助 typedef

下面是一个关于结构体 struct 的示例。

C++

#include 
using namespace std;

// 定义一个名为 MyStruct 的结构体
struct MyStruct
{
    int num;
    void increase()
    {
        num += 5;
    }
};

int main()
{
    MyStruct obj;
    obj.num = 5;
    obj.increase();
    cout << "Number is: " << obj.num << endl;

    return 0;
}

Output

Number is: 10

C++ 中的 Typedef Struct(带别名的结构体)

下面是一个在结构体中使用 typedef 的示例。请注意,绝大多数情况下,我们在 C++ 中并不需要这样做。这里展示这个例子只是为了告诉大家,从语法上讲,这种写法是完全合法的。

C++

#include 
using namespace std;

typedef struct MyStruct
{
    int num;
    void increase()
    {
        num += 5;
    }
} MyStruct;

int main()
{
    MyStruct obj;
    obj.num = 5;
    obj.increase();
    cout << "Number is: " << obj.num << endl;

    return 0;
}

Output

Number is: 10

C++ 中 Struct 与 Typedef Struct 的区别

  • struct 定义了一种用户自定义的复合类型;而 typedef struct 在定义结构体的同时,还为它创建了一个别名。
  • 使用 struct 时,我们可以直接通过结构体名字声明对象;而使用 typedef struct 后,我们可以直接使用别名来声明对象,无需书写 struct 关键字(虽然在 C++ 中 struct 本身也不需要写关键字)。
  • struct 将变量(以及函数)归组在同一个类型下;而 typedef struct 除此之外,还为该类型提供了一个方便的替代名称。
  • struct 的名字本身就可以作为类型使用;而 typedef struct 则明确地为该类型提供了一个显式的别名。
  • struct 是直接使用的;而在现代 C++ 中,typedef struct 的功能通常可以被 using 关键字取代,后者的语法更加清晰,也是现代 C++ 推荐的类型别名定义方式。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21880.html
点赞
0.00 平均评分 (0% 分数) - 0