一、自身默认访问级别不同:类默认是private,struct默认是public
struct加不加public都是一样的
而class中若要类外访问需要加public:同上的话左侧会报错
二、继承类的默认访问级别不同
结构体:struct A{int a;}; struct B:A{int b;}; 此处B是A的公有继承,结构体外的函数调用时可使用B.a 进行访问。
类: class A{int a;}; class B:A{int b;}; 此处B是A的私有继承,类外的函数调用时无法通过B.a进行访问。如果想要写成公有继承,改成 class B:public A
。
struct可以继承class,同样class也可以继承struct,继承方式的默认访问权限与基类无关,而是由继承中的子类决定的。
三、class可以用在模板中替代typename,struct不能
*****虽然有默认,但建议写清楚类型,便于程序的可读性