struct和class的区别

class类似的一个结构就是struct了,struct最早是在C语言中出现的,在C++中对struct的功能也进行了扩展。

一、默认的继承权限

struct默认是公有继承,class默认是私有继承。

二、关于默认访问权限

class中默认的成员访问权限是private的,而Struct中则是public的。

三、关于大括号初始化问题

  1. struct在C语言中
    在C语言中,我们知道struct中是一种数据类型,只能定义数据成员,不能定义函数,这是因为C语言是面向过程的,面向过程认为数据和操作是分开的,
    所以C语言中的struct可以直接使用大括号对所有数据成员进行初始化
    例如:
struct test
{
    int a;
    int b;
};
//初始化
test A={1,2};//完全可以
  1. 在C++中class和struct的区别
    在C++中对struct的功能进行了扩展,struct可以被继承,可以包含成员函数,也可以实现多态,当用大括号对其进行初始化需要注意:

当struct和class中都定义了构造函数,就不能使用大括号对其进行初始化。
若没有定义构造函数,struct可以使用{ }进行初始化,而只有当class的所有数据成员及函数为public时,可以使用{ }进行初始化
所以struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。

四、关于模板

在模板中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。

参考:
struct和class的区别

作者:yusq77

-------------------------------------------

Wish you all the best and good health in 2021.

原文地址:https://www.cnblogs.com/yusq77/p/13876852.html