C++中struct和class的区别

 一、使用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

http://blog.csdn.net/nocky/article/details/6195556

http://www.cnblogs.com/niaowo/p/4502519.html

 

posted @ 2017-08-01 13:54  王大咩的图书馆  阅读(198)  评论(0编辑  收藏  举报