C++中struct与class的区别

C++中struct与class的区别

首先
struct本身来说为C语言里用于将多种数据、多个变量组织在一起,便于表达比较复杂的数据类型,本质上来说并不是用于构造类的关键字,由于c++对C语言的兼容性导致该关键字被保留下来。

而class,则称作“”,是C++新增来支持面向对象思想概念中“类”的概念的一个关键词,具有更加强大的功能,包括定义方法等。

但是在c++程序中二者具有很多相似之处,可以说基本雷同,大部分情况下可以互通,不同之处主要体现在以下三个方面:

1)默认的继承访问权限不同,struct是public的,class是private的

2)构造类时的默认成员权限不同,struct的默认的成员变量访问控制是public的,而class的默认的成员变量访问控制是private的;

3)是否能用于定义模板参数,模板为C++语言新增特性,C语言没有,只有class可用于定义参数,而struct不可以(当然更建议此时使用typename)。

eg:template<class T>或者template<typename T>而不可以template<struct T>

4)构造及析构函数方面:二者在C++中的struct与class一样都是可以有析构函数和构造函数,而C中则不允许。

总体来看,struct更适合看成是一个数据结构的复杂数据类型,class更适合看成是一个类的定义。


版权声明:本文为SFDWU3QVG原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。