C++实例(class和struct做类型定义时的区别)

C++实例(class和struct做类型定义时的区别),第1张

C++实例(class和struct做类型定义时的区别),第2张

从语法上来说,class和struct在定义类型时只有两个区别:
(1)默认继承权限。如果没有显式指定,则从类继承被视为私有继承,从结构继承被视为公共继承;
(二)成员的默认访问权限。类成员默认为私有权限,结构默认为公共权限。
除了这两点,class和struct基本上是一回事。语法上没有其他区别。
不能因为学过C,就总觉得C++里连struct和class都差别很大。下面列出的指令可能比较枯燥,因为struct和class基本是一个东西,不用多说。但这些说明可能有助于澄清一些关于struct和class的常见误解:
(1)两者都可以有成员函数;包括各种构造函数、析构函数、重载运算符、友元类、友元结构、友元函数、虚函数、纯虚函数、静态函数;
(2)里面可以有很多public/private/protected修饰语;
(3)虽然不再提倡这种风格,但两者在语法上都可以用花括号初始化:A a = {1,2,3 };不管A是struct还是class,前提是这个类/结构足够简单(aggregat类型)。例如,所有成员都是公共的,所有成员都是简单类型,并且没有显式声明的构造函数。
(4)可以进行复杂继承甚至多重继承。结构可以从类继承,反之亦然;一个struct可以同时继承5个类和5个struct,虽然这不是很好。
(5)如果类的设计需要注意OO的原理和风格,那么没有理由说设计struct不需要注意。
(6)还是那句话,上面的说法都是指C++语言。至于C中的情况,C中没有“类”,C的struct从根本上来说只是一种打包数据的语法机制。
最后,作为语言的两个关键字,除了以上定义类型时的区别,还有一点:关键字“class”也是用来定义模板参数的,就像“typename”一样。但是关键字“struct”不用于定义模板参数。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++实例(class和struct做类型定义时的区别)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情