【C++】类和结构

转载http://blog.csdn.net/zqpgood/article/details/6781195


结构体和类都是提供了数据的封装和构造 

结构体主要是c语言的特色 
类是c++的基本机制 
结构体中的数据默认方式是public的,而类是private 
结构体不提供继承机制,类提供继承机制,实现代码复用 
类可以实现多态,结构体不支持 

学习了面向对象思想后,就可以不用结构体了 

结构体和类区别

 

结构体和类有很多地方很相似,是类的一种轻量级的替代品。因此弄清楚他们的区别和相同点,能比较好的把握他们的使用。

比较:

比较内容

结构

构造函数

支持(不能自定义,默认提供,作用是将所有的数据成员置零)

支持(能自定义)

析构函数

不支持

支持

变量初始化

不支持(private int num = 50 是错误的)

支持

继承

不支持(sealed类型)

支持

接口

可以实现多个接口

可以实现多个接口

特性

支持

支持

属性

支持

支持

方法

支持

支持

类型

值类型

引用类型

Summary

1:结构体隐式地从Obeject派生出来

2:从类型的区别可以看出:

结构体数组效率比类数组效率高(不需要装箱合拆箱)。结构体集合(如Hashtable)效率比类集合效率低。集合的元素是引用类型,所以结构体必须进行装箱和拆箱处理。所以类在大的集合中更有效率。

表面上看类好像是只比结构体多了函数,但其实不然
类比结构体多了很多特性,比如继承等

意思上它们区别不太大,都是为了把一系列相关的东西放在一起处理,类是从结构体上发展而来的,比结构体更加高级 

1.    在C++中只有两点区别:   
     (1)class中默认的成员访问权限是private的,而struct中则是public的。   
     (2)从class继承默认是private继承,而从struct继承默认是public继承。
   
       除此这外无任何区别。   
2.    class可以包含过程,函数,数据类型对象,默认private;

      而struct 则只有数据类型对象,默认public。

c#语言中,结构体和类的区别

在C#语言中,“结构体”和“类”有啥区别?怎样辨别是结构体还是类!
两者里面是不是都有构造函数?为什么结构体用得比较少?
望c#高手指点,谢谢!我把“结构体”、“类”、“构造函数”这三种搞混了,有点分不清,麻烦给讲解下!真的谢谢了。。。。。
♂红芍 回答:4 人气:7 解决时间:2010-12-11 21:58
满意答案
   好评率:100%

楼上说的很详细

结构和类有什么区别呢.

结构和类一样 都同等于一个自定义类

但是结构是值类型 如果你在结构中有一个int a

你写上一句int B = a的话 他们的值会是一样 但是不管你怎样改变其中的一个 另外一个也不受影响

因为这是值类型(基本数据类型) B只是a的值的副本

如果是类的话 int B = a 他们的值也会是一样 但是你只要改变了其中一个 另外一个也会改变

因为类是引用类型 B和a都指向同一个值的地址 而并不是a的一个副本

在使用中 类的功能比结构要大很多

 

构造函数的话 和类差不多

如果不写构造函数:

他们都默认会有一个无参的构造函数

 

但是如果带了有参的构造函数 :

类的话可以在重新写一个无参的 否则就不能使用无参构造函数创建实例

结构的话不需要在写无参的构造函数

至于怎么区分结构还是类

这很简单 结构在定义的时候 前面要加Struct 而类在定义的时候前面要加Class

回答人的补充   2010-12-06 14:34
还有一些其他的
回答采纳率:36.5% 2010-12-06 14:31
满意答案
   好评率:100%

【从定义上区分】

1)结构体是structure为关键字起手的定义,而类是class。

2)结构体的默认构造函数是无参的构造函数,但是如果你为一个结构体定义了带参的构造函数,你绝对不能再重复去写一遍那个无参的空构造函数;类相反——定义了一个带参的构造函数,绝对要再重复定义一次空构造函数,否则你无法调用空构造函数。

 

【从使用角度区分】

1)Struct结构体是“复合类型”,其功能等同与基本的int,double的用法,尽管struct也可以写方法,但是不赞成这样做。因为struct的引入是为了解决“多类型”的问题(比如一个学生记录包含id,name等不同基本类型的组合,单个int,string无法满足,所以才出现了struct)。类是组成面向对象编程的基础,功能远远大于结构。

2)Struct因为默认继承System.ValueType(可以这样理解),因此说,一个结构赋值给另外一个结构的时候,相当于做了拷贝复制功能(两者完全没有联系,假设A=B,那么B和A各自改变互不影响);但是class的话A=B,A和B共同引用同一个单元,A或者B有一方改变就影响了另外一方。本质上class是封装的指针而已。

 .NET中类和结构的区别?

  答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能声明有默认的构造函数,因为结构的副本是编译器创建和销毁的,所以不需要默 认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是引用类型,改变其变量的值会改变其原值。声明结构用 Struck关键字,申明类用class关键字,向方法传递结构时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。

回答采纳率:33.3% 2010-12-10 12:25

    ”结构体”、“类“功能上差不多,只是”结构体”一个值传递,“类“一个指针传递。

    而“构造函数”是实例化一个声明的对象。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值