C++中的struct

最近在看android代码,经常会发现有struct定义的结构,也有用class定义的结构。从c语言工程师转到c++工程师,开始还真是很费解。

就我原来的理解,struct其实就是一种记录各种数据格式的数据结构,但是在c++中,显然只是struct一种表现形式。

一. c++中的struct能做什么

1.c++中struct保留c语言中用法,即当成一种只有成员变量的数据结构。此时的struct,可以用像c语言一样花括弧来初始化:Student A = {1,12,"xxx",3};

typedef struct _student {
     int id;
     int age;
     char * name;
     int grade;
}Student;

2.c++中延展struct关键字的用法,使得struct可以拥有成员函数。从下面的可以看出,struct已经初具class的形态。

struct AExample {
    AExample();
    ~AExample();
    void setFd(int fd);
    int mfd;
    int mChar;
};

3. c++中的struct,不仅可以表现为如上的形式,而且可以使用public, protected, private等权限限制。而一旦允许其这样使用,势必是为struct被继承做准备。

     不仅如此,struct同样可以继承class类和实现多态,这里不给出实例代码了。

struct AExample {
public:
    AExample();
    ~AExample();
protected:
    void setFd(int fd);
private:
    int mfd;
    int mChar;
};
struct AExam_Child : public AExample{
public:
    AExam_Child();
    ~AExam_Child();
protected:
    void use(int fd);
private:
    int mUse;
}

二. c++中的struct与class的区别

从上面的介绍,我们可以看出,struct关键字与class的功能基本一致,那去掉其中一个岂不更好。表面上看,这两者没有差别,但实际上还是有些差异。

1. 默认的成员访问权限:struct默认是public,class默认是private。

2.默认的继承访问权限:struct默认是public,class默认是private。


从以上的差别来看,可以说如果都显式的表明访问权限关键字,那么两者基本等价。

至于用法的差异,还得继续研究.......






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值