zoukankan      html  css  js  c++  java
  • struct和class的联系与区别

      C++支持另一个关键字struct,它也可以定义类类型。struct关键字是从C语言继承过来的。

    默认初始访问级别不同:

      如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public,使用class还是struct关键字来定义类,仅仅影响默认的初始访问级别。

    默认继承级别不同:

      class保留字定义的派生类默认具有private继承,而用struct保留字定义的类默认具有public继承

      

    1 class Base {}
    2 struct D1: Base {}; //public inheritance by default
    3 class  D2: Base {}; //private inheritance by default

      有一种常见的误解认为struct保留字定义的类与用class定义的类具有更大的区别。唯一的不同只是默认的成员保护级别和默认的派生保护级别,没有其他区别:

      

     1 class D3 : public Base {
     2 public:
     3     /*...*/
     4 };
     5 //equivalent definition of D3
     6 struct D3: Base { //inheritance public by default
     7 /*...*/1    
     8 };
     9 
    10 
    11 struct D4 : private Base {
    12 private:
    13     /*...*/
    14 };
    15 //equivalent definition of D4
    16 class D4: Base { //inheritance private by default
    17     /*...*/            //initial member access private by default
    18 };

      一般来说只有数据时候使用struct,其它一概使用class。

      如果需要更多函数功能,class更适合,如果不确定,直接使用class。

    以上说的都是C++中的struct和class的区别,那么C中的struct和C++中的struct之间的区别是什么呢。答案是:

      C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。

    参考资料:

      1. 《C++ Primer》第五版 电子工业出版社

      2. http://blog.csdn.net/jirongzi_cs2011/article/details/9945989

  • 相关阅读:
    日积月累flex4细节上的改变
    flex3:dragdrop全攻略(二)
    理解自定义组件
    两个mxml页面的跳转问题
    日积月累12个flex常用功能代码(转载)
    flex开源工具整理
    二叉树学习(上)
    实现数据库同步备份 过程结果分析
    ASP.NET服务器对于请求的处理过程
    C#泛型
  • 原文地址:https://www.cnblogs.com/vincently/p/4214492.html
Copyright © 2011-2022 走看看