1.2 关键词带来的差异,class 与 struct

Q1:strcut 关键词与 class 关键词的区别

①. 除了访问级别外并无不同

②.  在观念上,struct 关键词是 C 的数据抽象概念,class 关键词是C++ 的 ADT(抽象数据类型)观念

Q2:策略性正确的struct

 ①. 当单纯定义仅含数据成员的结构体时,使用 struct 将数据封装起来,保证拥有与 C 兼容的空间布局

 ②. 当定义含操作的类时,使用 class 较好

    注:当需要 C 声明那样的数据时,应将所需部分用 struct 声明,并通过转换操作符从 class 中萃取出来

Eg:
Struct C_point{…};
        Class Point
        {
            Public:
                Operator C_point() {return _c_point;}  //转换操作符的使用

            Private:
                C_point _c_point;
        }   
    此时 C_point 有与 C 完全兼容的空间布局

Q3:C++ class 内存布局

①.处于同一个 access section 的数据,必定保证以其声明顺序出现在内存布局中。

②.处于不同的 access section 中的数据之间的排列顺序则不一定。

Q4:一个 C 中的使用技巧:把单一元素数组放在一个 struct 的尾端,则每个 struct 对象都可以用一个可变大小的数组

Eg:
        Struct mumble
        {
            Char pc[1];
        };

        //读取一个字符串,为struct 本身与该字符串配置足够的内存

        Struct mumble * pmumbl = (struct mumble *)  malloc (sizeof( struct mumble) + strlen(string) + 1 );

        Strcpy(pmumble->pc,string);
但是在C++ 中,这种技巧有可能顺利实现,有可能不能实现

Eg:
        Class stumble
        {
            Public:
              //….
            Protected :
            //….
            Private:
                       char  pc[1];
        };
    此时,若 protected data member 位于 private data member 之前时,可以实现该技巧;否则,将无法实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值