结构体

​ 结构是 C 编程中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。

​ 声明方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct tag {             //结构体标签
member-list //标准的变量定义
member-list
member-list
...
} variable-list ; //结构变量,定义在结构的末尾,可以存在多个
//以上三者同时出现两个即可
//举个例子
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;

​ 创建内容方式:

1
Books book = new Books();

​ 调用成员方式:

1
book.title

​ 类是将同类对象的共同属性和行为抽象出来形成的一个相对复杂的数据类型。与结构体一样,都是为了描述一个相对复杂的对象。

​ 声明方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class 类名称
{
public:
公有成员(类与外部的接口)
protected:
保护型成员(类的继承)
privat:
私有成员(辅助作用的数据或函数)
}

//举个例子
class Question
{
int Number;
string Content;
}

​ 构建类的对象:

1
2
3
// 类名 对象名;
//举例:
Question myQuestion = new Question();

​ 调用成员方式:

1
myQuestion.Number

相同之处

  1. 两者都是container类型,均是为了描述一个相对复杂的对象而可以存储不同类型的数据项。
  2. 声明、构建对象以及调用方式非常类似。
  3. 两者的成员都有其各自的存取范围。例如,可以将某一个成员声明为Public,而将另一个成员声明为Private。
  4. 二者都可以实现接口。

…….

区别之处

  1. 结构体是实值类型(Value Types),而类则是引用类型(Reference Types)。
  2. 结构体使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation)。
  3. 所有结构成员默认都是Public,而类的变量和常量数则默认位Private,不过其他类成员默认都是Public。
  4. 结构体成员不能从继承自其他类或结构体,也不能被其他类或结构体继承(但可以实现接口),然而类可以。
  5. 结构不允许声明析构函数(Destructor),类则无此限制。

……..

什么时候用哪个

​ 当对象是轻量级、数据简单时,可以使用结构体存储。因为结构体是值类型,自身存储在栈上。

​ 而当对象时重量级、数据逻辑复杂时,建议使用类存储。因为类是引用类型,可以抽象、继承等。

​ 当然,更重要的还是要使用源于你多次coding后积累的宝贵经验来做出实际判断啦~

引用与参考

类与结构体的区别_款冬的博客-CSDN博客_结构体和类的区别

结构体和类的区别_吕宏旺的博客-CSDN博客_类和结构体的区别

感谢提供资料的uu们,也欢迎大家光临我的个人博客,我们下期再见~