从零开始学习C++(二十一.结构体)

154 阅读2分钟

「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战

前言

上篇学习了一下C++中类和对象的基础知识,今天看下结构体,结构体是在以前,没有面向对象编程的时候通常使用这些从逻辑上把一些不同的数据类型组合到一起用的跟我上篇文章的对象差不多一样,但是结构体并没有那么多的功能。

定义

结构体是用户自定义的数据类型,用于存储不同类型的数据项,数组是存储相同数据类型。使用关键字struct来定义:

strcut Cat{
    string name 
    int age
}

类成员默认情况是私有的,而结构体的成员默认是共有的,在一般情况下结构体声明只会声明成员变量,而不像类一样声明成员函数,结构体声明的时候不会创建任何结构体的实例,只是告诉编译器这个结构体的结构,只有在实例化的时候才发挥它正真的作用,

初始化

Cat mycat = {"老菜鸟", 10};

访问

#include <iostream>
using namespace std;

struct Cat {
    string name;
    int age;
};

int main()
{
    Cat mycat = { "老菜鸟", 10 };
    cout << mycat.name << endl;
    cout << mycat.age << endl;
}

image.png

嵌套结构体

#include <iostream>
using namespace std;

struct Son
{
    string name = "小菜鸟";
};

struct Father
{
    string name="老菜鸟";
    struct  Son son;
};

int main()
{
    Father tomato;
    cout <<tomato.name << endl;
    cout << tomato.son.name << endl;
}

image.png 像这种在结构体里面声明并初始化成员变量虽然可以通过编译可以运行,但是他是非法的,不能使用的,违背了C++设计结构体的初衷(C++的结构体继承于C语言),结构体声明只是声明一个结构体,要给结构体里面的成员实例化只能在它的外面进行复制,实例化后才分配内存村存储初始值。

总结

C++ 的基础学习就到这里准备结束了,在学习的过程中发现没有项目驱动只是过了一下基本的知识点,收获太少,重新了解了一下底层只是,后面继续想从工作角度入手开始写一点有意义的东西。