zoukankan      html  css  js  c++  java
  • 结构体和类的区别

    1.C的结构体和C++结构体的区别

       1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。

       1.2 C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

       1.3 C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

       以上都是表面的区别,实际区别就是面向过程面向对象编程思路的区别:

           C的结构体只是把数据变量给包裹起来了,并不涉及算法。

           而C++是把数据变量及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限。

       C语言中是没有类的概念的,但是C语言可以通过结构体内创建函数指针实现面向对象思想。

    2.C++的结构体和C++类的区别

       2.1 C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。

       2.2 C++结构体的继承默认是public,而c++类的继承默认是private。

    3.obective-c结构体和obective-c类的区别

      3.1  objeive-c的结构体和c的结构体最接近的,不可以继承且不允许函数存在。

      3.2  obective-c类和java的类是最接近的,具体的差别读者可以自行查资料,这里就不详细说明了

     总结:java,objective-c,c++的结构体和类共性的区别是:

      1: 类是引用类型,结构是值类型

      2: 类在堆中,结构在栈分配内存

    讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:  

     1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些  

     2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。

            在此情况下,结构的成本较低。   

       3.在表现抽象和多级别的对象层次时,类是最好的选择   

       4.大多数情况下该类型只是一些数据时,结构时最佳的选择

      

      

     
     
  • 相关阅读:
    DLL注入实践
    程序编译保护机制
    加密配置文件总结
    PCL点云配准(3)
    PCL点云分割(3)
    ubuntu Ros环境halcon的一个程序
    opencv2/nonfree/nonfree.hpp:没有那个文件或目录
    深度图像计算三维点云
    利用深度学习的点云语义分割(一)
    3D 特征点概述(2)
  • 原文地址:https://www.cnblogs.com/lianghe01/p/5268588.html
Copyright © 2011-2022 走看看