三九宝宝网宝宝百科宝宝知识

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

12月02日 编辑 39baobao.com

[每一次成功都需要一份执着,牛津大学offer实例]柯同学是在时间特别紧迫的情况下才开始准备申请的。我依稀还记得那是在十月中旬的时候,当时离牛津大学的第一轮截止时间只有不到20天的时间了。在如此短的时间内要完成并递交...+阅读

从语法上,class和struct做类型定义时只有两点区别:

(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;

(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。

除了这两点,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 type),比如所有的成员都是public的,所有的成员都是简单类型,没有显式声明的构造函数。

(4)都可以进行复杂的继承甚至多重继承,一个struct可以继承自一个class,反之亦可;一个struct可以同时继承5个class和5个struct,虽然这样做不太好。

(5)如果说class的设计需要注意OO的原则和风格,那么没任何理由说设计struct就不需要注意。

(6)再次说明,以上所有说法都是指在C++语言中,至于在C里的情况,C里是根本没有“class”,而C的struct从根本上也只是个包装数据的语法机制。

最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。

以下为关联文档:

区角实例:娃娃过生日幼儿游戏情况:区角游戏开始了,孩子们来到自己喜欢的区角,周阳阳、何芷研、张会馨等把椅子搬到了娃娃家。他们在娃娃家玩了一会,就没有心思玩了。一会儿娃娃家里就空无一人,餐具...

爱尔兰唐道克理工学院申请实例展示学生姓名:闻同学毕业院校:国内普通高中录取院校:爱尔兰唐道克理工学院申请老师:钱梅群姓 名:钱梅群电 话:13816089619所属部门:香港、爱尔兰、英国留学部E-mail:qianmeiqun&ems...

实例示范l想让孩子能说会道,你需要做到这四点掐指算一算,我们每天给孩子读绘本的时间是非常有限的,能做到每天一小时的父母已经很牛逼了。而大部分时间孩子其实是靠在生活中通过与人交流来学习语言的。因此,学习如何高效利...

实例讲解托福写作中最易出现的语法问题第一,连接词过渡句任何形式的英语文章中都应该具备一定量的连接词(路标词),因为它们是有助于读者顺利阅读的导航坐标;大多数考生在备考时也的确会准备一系列此类连接词,用于文...

实例讲解析托福写作中提问式开头的表达方式在托福写作的过程中,引人注目的开头段,不但使全文更有导向性,另外也可以引起审阅人的兴趣,让他们非常自然的跟随着你的思路,步步深入到作文的内容。那么,在托福的作文开头段的表述...

实例讲解托福写作避免使用初期词汇涉及托福的时候,能够有着清晰的逻辑固然很重要,但是词汇对于整篇内容的准确表达也有着至关重要的作用。如果在文章中用惯普通的初级词汇,那文章就显得过于暗淡。如何避免初级词...

实例讲解巧妙的将谚语应用到托福写作中的方法托福高分作文必背的转承词托福作文训练中,各位应该有意识地使用下列连接词,这对提高作文分数是很有帮助地,大家在练习托福写作时可以参考使用。同时大家在使用这些词的时候,必...

实例讲解托福高分作文的写作技巧实例讲解托福高分作文的写作技巧言简朴实原则是行文主张不写啰嗦或绚丽的字眼(flowery or wordy),一句能用两个字,绝不多加一个。例如:At this point in time, we should pul...

C++技巧:emacs完美的C++的自动补全1,CVS cedet的最新代码,1.04代码补全很慢。 cvs -z3 -d:pserver:anonymous#cedet.cvs.sourcefe.:/cvsroot/cedet co -P cedet 2,命令行运行 touch `find -name "Makefile"` (注...

推荐阅读
图文推荐