酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 385367
  • 排名 - 64

最新随笔

最新评论

阅读排行榜

评论排行榜

 结构(struct) 与 类(class)

结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。结构可以声明构造函数,但它们必须带参数。声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段是错误的。在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象,并且调用适当的构造函数。与类不同的是,结构的实例化可以不使用 new 运算符。如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。

结构可实现接口,其方式同类完全一样。

一个是值类型(结构),一个是引用类型(类),结构在传递的时候如果没有指定ref,则传递的是内存中的一分副本,而class则是传递对他的引用。

类在堆中,结构在栈中,类传递的是类在堆中的地址,而结构是在栈中另复制了一个传递,你改变传递过来的结构不会影响原结构。而类是引用,共用一块内存,会改变堆中类的内容. 


  
posted on 2006-10-16 09:00 @王一伟 阅读(3424) 评论(3)  编辑 收藏 引用 所属分类: 4. C++

Feedback

# re: 类和结构的区别 2008-11-16 18:56 zsuzyb@126.com
你说的是C#中 struct 和 class的区别吧,和C++还是有所区别的;

C++中二者最大的区别 就是 struct 的成员 默认是 public, 而 class 的成员默认是 private 的  回复  更多评论
  

# re: 类和结构的区别[未登录] 2009-07-22 19:24 zz
同意楼上的……  回复  更多评论
  

# re: 类和结构的区别 2011-02-12 14:42 无语
LZ是转的C#的文章吧  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理