总述
在学习c++的时候会遇到一个问题:什么时候使用struct,什么时候使用class?
C的struct
1 | struct tag { |
tag 是结构体标签。
member 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。
variable 结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量。
一般情况下,上述三个变量至少要出现2个。
struct不能给内部变量初始化。
值得一提的是,在C中struct是用来封装数据的(member可以包含一个或多个基本数据类型,也可以包含其它结构体),但是其中不能够有成员函数。
想要C语言中的struct中包含成员函数,只能通过函数指针去替代成员函数。
1 | #include <stdio.h> |
C++的struct
C++的struct和class的关联
回到正题,c++中继承了在c语言中的用法,但是又做了改进:可以包含成员函数。从可实现功能上来看,struct和class基本上没有什么区别了。
1 | #include <stdio.h> |
C++的struct和class的区别
默认修饰符:struct是public,class是private。以下的代码从逻辑上是等价的:
1 | class A { |
默认继承方式是:struct是public继承,class是private继承。建议在继承时需要显示地指明修饰符。
1 | class A { |