C++面试问题之struct,union和class的区别

在软件开发工程师中,笔试和面试有时候会问到一些细节问题,比如C语言和C++中struct的区别,不了解C语言的人可能还不太清楚。C++笔试和面试经常遇到的就是struct和class的区别,想必几乎所有准备的人都会回答这个问题,但是继续问union与他们的区别呢?可能很多人一时都无法回答出来。

    CSDN有位仁兄说的好啊,struct是妈妈,union是爸爸,class是儿子,class可以继续生叫派生。

    struct和class没有本质的区别,从语法上讲,区别在于两点:默认集成权限和成员默认访问权限。不同人之间编程风格有差异,个人偏好使用class。个人觉得struct一般不提倡使用函数做为其成员且不提倡struct的复杂继承。

    class成员默认权限是private,而union成员默认权限是public

    class A{ int a; public:  int b;};   //a的权限为private

    struct B{int a; privat: int b};   //a的权限为public

    union是一种特殊的struct,利用union可以用相同的存储空间来存储不同的数据类型,从而节省空间。union一次只能使用一个成员,这样说还是比较抽象,看下面这个列子:

    #include<iostream>

    using namespace std;

    union WeightType{
        int wtInOunces;
        int wtInPound;
        float wtInTons;
     };

    void main(){
          WeightType wtType;
          wtType.wtInOunces=5;    

           //wtInOunces已经不再需要,内存被重新使用。
          wtType.wtInPound=10;
          cout<<wtType.wtInOunces;     //  10

          cout<<wtType.wtInPound;      //   10

          cout<<wtType.wtInTons;        //    1.4013e-044
          system(“pause”);
}

     C++中union不可以存储有构造函数的类的对象,但可以存储没有构造函数的类的对象。

版权声明:本文来自七叶草博客 www.qiyecao.org,转载请不要删除该信息!
 

相关文章

  • 华为2011年C++程序机试题
    离华为的机试越来越近了,哥的C++编程能力实在不敢恭维,必须准备一下。网上到处找...
  • C++中堆与栈的区别
    我们大家都知道堆是由程序员申请内存分配获得,一般都涉及动态内存分配与处理。栈是操...
  • 含有头结点的单链表逆序
    最近参加华为机试和中兴笔试都遇到了单链表逆序,在机试过程中采用了投机取巧的办法把...
  • 2012年华为南京机试C++编程题
    同学都陆续到华为参加了机试,题目整体难度不大,基本上都是考字符串相关的题目。这里...
  • C++编程实现快速排序
    快速排序又称之为分区排序,排序算法是:任取待排序元素序列中的某个元素作为基准,按...