struct和class的区别
class类似的一个结构就是struct了,struct最早是在C语言中出现的,在C++中对struct的功能也进行了扩展。
一、默认的继承权限
struct默认是公有继承,class默认是私有继承。
二、关于默认访问权限
class中默认的成员访问权限是private的,而Struct中则是public的。
三、关于大括号初始化问题
- struct在C语言中
在C语言中,我们知道struct中是一种数据类型,只能定义数据成员,不能定义函数,这是因为C语言是面向过程的,面向过程认为数据和操作是分开的,
所以C语言中的struct可以直接使用大括号对所有数据成员进行初始化
例如:
struct test
{
int a;
int b;
};
//初始化
test A={1,2};//完全可以
- 在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.