C++中struct和class的区别
2014-10-17 10:03
155 查看
从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
关于使用大括号初始化
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
关于默认访问权限
class中默认的成员访问权限是private的,而struct中则是public的。
关于继承方式
class继承默认是private继承,而struct继承默认是public继承。
关于模版
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class中有个默认的this指针,struct没有
http://blog.csdn.net/tanghuashijia_/article/details/12121029
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
关于使用大括号初始化
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。
关于默认访问权限
class中默认的成员访问权限是private的,而struct中则是public的。
关于继承方式
class继承默认是private继承,而struct继承默认是public继承。
关于模版
在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。
class中有个默认的this指针,struct没有
http://blog.csdn.net/tanghuashijia_/article/details/12121029
相关文章推荐
- C++中struct与class的区别
- C++中struct与class结构的区别
- C++中struct与Class的的区别
- C与C++中struct的区别,以及C++中struct与Class的区别
- C++中struct与class的区别
- C++ 中 struct 与 class的区别
- C++中struct与Class的的区别
- [C++] 再谈Struct和Class的区别
- 在c与c++下struct的区别,已经在c++下struct与class的区别。
- 标题:C++中struct与class的区别是什么?
- 研讨C++中struct与Class的区别
- C++中class与struct的区别
- 这篇文章记录C++中struct与class的区别
- c++中 class与struct的区别
- C++中class与struct的区别
- C++中class与struct的区别
- C++中class与struct的区别
- C++中class与struct的区别
- C++中class与struct的区别
- C++中class与struct的区别