一、使用class和struct定义类唯一的区别是默认的访问权限。
如果使用struct关键字,则定义第一个访问说明符之前的成员是public的,或没有访问说明符,则默认为public;相反,如果使用class关键字,则这些成员是private的,或没有访问说明符,则默认为private。
注:访问说明符:public、private
1 class Sales_data 2 { 3 double price; //默认为私有成员。 4 ..... 5 }; 6 7 struct Sales_data 8 { 9 double price; //默认为公有成员。 10 ..... 11 };
二、默认继承权限不同
如果不明确指定,来自class的继承按照private继承,而struct的继承按照public处理。struct和class可以相互继承,但当交叉继承时,到底默认继承的public还是private的,这个要和子类关键字有关。
struct A{}; struct B:A{}; //公有继承 class C:A{}; //私有继承
如果将其中类A的关键字变为class
1 class A{}; 2 struct B:A{}; //私有继承,默认的继承访问权
若是还想类B公有继承继承class A,则需指定继承类型,如下:
1 struct B :public A{};
三、定义模板参数
定义模板参数时,我们可以用class或typename,但是这里不能用关键字struct去定义模板参数。
个人水平有限,若有错误,欢迎指出,谢谢!
链接:
http://www.cnblogs.com/ccsccs/articles/4025215.html
http://www.cnblogs.com/findumars/p/5006172.html